我创建一个函数来执行动态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