sql - 在函数 (SQL Server) 中执行动态 sql 时出现错误?

标签 sql sql-server-2008 function

我创建了一个函数来执行动态 SQL 并返回一个值。我收到“只有函数和一些扩展存储过程可以从函数内执行”。作为一个错误。

功能:

Create Function fn_GetPrePopValue(@paramterValue nvarchar(100))
returns int as
begin
declare @value nvarchar(500);

Set @SQLString  = 'Select Grant_Nr From Grant_Master where grant_id=' + @paramterValue

exec   sp_executesql
       @query = @SQLString,       
       @value = @value output

return @value   
end 

执行:

Select dbo.fn_GetPrePopValue('10002618') from Questions Where QuestionID=114

和:

Select fn_GetPrePopValue('10002618') from Questions Where QuestionID=114

函数调用正确还是不正确?

最佳答案

您不能从函数中使用动态 SQL,也不能调用 存储过程。

Create proc GetPrePopValue(@paramterValue nvarchar(100))
as
begin
declare @value nvarchar(500),
        @SQLString nvarchar(4000)

Set @SQLString = 'Select @value = Grant_Nr From Grant_Master where grant_id = @paramterValue'

exec sp_executesql @SQLString, N'@paramterValue nvarchar(100)', 
       @paramterValue, 
       @value = @value output

return @value   
end 

关于sql - 在函数 (SQL Server) 中执行动态 sql 时出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15180561/

相关文章:

java - 如何从逗号拼接的数据库字符串中进行 SELECT - SQL

SQL - 从上面的行返回值

Sql Server 2008 快速递归查询

python - 递归函数计算数字中数字的出现次数(python)

javascript - 使用函数属性引用数组中的对象

sql 在子集中创建序列号 - apache derby

mysql - 为什么这个左外连接会产生错误的结果?

sql - 将表创建从 MSSQL 转换为 PostgreSQL

sql-server-2008 - 从当前数据库中的另一个数据库运行存储过程

javascript - jquery/javascript - 从 onComplete 属性运行两个函数