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

前端之家收集整理的这篇文章主要介绍了在函数(SQL Server)中执行动态sql时出错?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建一个函数来执行动态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

猜你在找的MsSQL相关文章