我想确保sql函数不能对数据库进行更改吗?

时间:2019-03-22 06:33:22

标签: sql-server sql-function

我了解SQL函数无法更改数据库,因此我需要使用存储过程。

但是我仍然尝试以下方法:

创建表格进行测试。

    create table [dbo].[testTable](
        [id] [int] identity(1,1) not null,
        [value] [nvarchar](max) null
    ) 

创建了一个可以将值插入表格并返回其ID的函数。

    create function InsertToDB(
        @value nvarchar(MAX)
    )
    returns nvarchar(1000)
    as
    begin
        declare @cmd nvarchar(max)  

        set @cmd = 'insert into testTable([value]) output inserted.id values ('+ @value +')'

        exec sp_executesql @cmd 

        --I don't know how to return the id dependent on the value.
        return 'sucess' 
    end

执行功能。

    select [dbo].InsertToDB('test123')

错误消息:

  

只能在函数内部执行函数和某些扩展存储过程。

我想问两个问题:

  1. 我想确保还有其他解决方案吗?不可能吗?
  2. 如果可能,如何返回ID?

0 个答案:

没有答案