如何将 MSSQL PRINT 输出存储到变量

2023-12-22

在 MS SQL 2008 R2 上,我希望能够将消息输出捕获到变量中。我需要在许多数据库上运行脚本。捕获消息输出(来自 print 或 raiserror 的消息)并将其记录到表中。我需要从存储过程内部执行此操作。

对于这个脚本

Declare @sqlscript nvarchar(500)

Set @sqlscript = 
'select * from sys.objects
raiserror (''My raised error'', 10,1)
select * from sys.schemas
print ''my print'''

EXEC sp_executesql @sqlscript

我想得到

My raised error    
my print

or

(60 row(s) affected)  
My raised error

(21 row(s) affected)  
my print

Update
我决定采纳@rs的建议。对我来说,登录表格是最简单的方法。使用 SP 来记录(以保持代码干净),加上一个小的正则表达式来重构我的所有脚本。该解决方案将于明天准备就绪。多谢。


您可能可以使用 CLR 和与此类似的技术:

http://blogs.msdn.com/b/mattm/archive/2007/09/13/capture-print-messages-from-a-stored-procedure.aspx http://blogs.msdn.com/b/mattm/archive/2007/09/13/capture-print-messages-from-a-stored-procedure.aspx

但最好的选择可能是 EXEC 到一个临时表中,该表只有一个 varchar 列:

http://msdn.microsoft.com/en-us/library/aa175921%28v=sql.80%29.aspx http://msdn.microsoft.com/en-us/library/aa175921%28v=sql.80%29.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 MSSQL PRINT 输出存储到变量 的相关文章

随机推荐