【问题标题】:How do I get an stored procedure output into a variable inside a function in T-SQL?如何将存储过程输出到 T-SQL 中函数内的变量中?
【发布时间】:2011-02-17 14:36:09
【问题描述】:
我有一个任务,只能通过在运行时构造一个 QUERY 并使用 sp_executesql 执行它来完成。结果必须是一个布尔值(0/1 整数),我需要将其作为函数的结果返回。
我发现捕获 SP 输出的唯一方法是“INSERT INTO [table] EXECUTE [sp]”查询,但函数禁止这样做。
任何想法如何克服这个问题?
【问题讨论】:
标签:
sql-server
tsql
stored-procedures
dynamic-sql
user-defined-functions
【解决方案1】:
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