我有一个任务,只能通过在运行时构建QUERY并使用sp_executesql执行它来完成。结果必须是一个布尔值(0/1整数)值,我需要返回该值作为函数的结果。
我发现捕获SP输出的唯一方法是“INSERT INTO [table] EXECUTE [sp]”查询,但函数禁止这样做。
任何想法如何克服这个?
答案 0 :(得分:3)
sp_executesql允许您传入参数,但也可以将参数声明为输出。只是看看这个不是很动态的简单示例,但是展示了sp_executesql
的输出参数如何工作
declare @sql nvarchar(max)
declare @user sysname
select @sql = 'SELECT @user = SYSTEM_USER'
exec sp_executesql @sql, N'@user sysname OUTPUT', @user OUTPUT
select @user