【发布时间】:2017-02-09 22:44:21
【问题描述】:
是否可以在存储过程的执行过程中输出所有当前变量值的列表?
对于上下文,最好知道当存储过程抛出错误以帮助排除故障时变量值是什么。当然,您可以手动将此日志记录与硬编码的变量值放在一个 catch 块中,但这不是干净的或可转移的。
您不能使用 sys.parameters(即使它只是处理参数),因为动态 SQL 不起作用。是否有任何内置变量或 sys 表来存储当前作用域的变量,这些变量可以在执行期间输出?
BEGIN TRY
DECLARE @Variable1 VARCHAR(64) = 'test'
-- Do stuff
END TRY
BEGIN CATCH
EXEC SpCustomLog @VariableValues = @Variable1 -- hardcoded
EXEC sp_execute 'SELECT @Variable1' -- not in scope/lost in build
END CATCH
【问题讨论】:
-
AFAIK,这不能在 T-SQL 中完成。我很好奇如何在其他编程语言中一般地记录当前范围内的所有变量。
标签: sql-server tsql stored-procedures dynamic scope