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