【发布时间】:2023-01-13 03:22:31
【问题描述】:
如果 SQL 存储过程中存在语法或运行时错误,我想生成一个文本文件。 例如,我想在调用过程时创建一个包含此信息的文本文件,如果生成以下错误:
消息 8114,级别 16,状态 5,过程 sp_LoadKAD_UAT,第 94 行 [批处理开始第 94 行] 将数据类型 varchar 转换为 float 时出错。
我没有使用任何其他前端工具。我需要 SQL Server 中的解决方案。 我正在使用 Microsoft SQL Server 2017
我已经对 TRY 和 catch 块以及 @@Error 进行了研究,但我还没有找到解决方案。
【问题讨论】:
-
您可以从
error_message()的 catch 块中获取错误。您可以将其插入到日志表中,您可以从中查询或导出数据。如果您真的必须在 sql server 中完成所有操作,可以使用实用程序函数脚本使用scripting.filesystemobject写入文件。 -
使用 try_convert( float, YourColumn ) ... 如果转换失败,这将返回 NULL 而不是抛出错误。现在,如果您想查看有问题的行 Select * from YourTable Where try_convert( float, YourColumn ) is NULL and YourColumn is not NULL
标签: sql-server error-handling runtime-error