带有换行符的 Teradata 错误消息需要作为参数传递给 bat 文件

Teradata error message with new line character needs to be passed on as a parameter to a bat file

以下是 Teradata 在使用 bteq 脚本执行时抛出的错误消息。此错误消息将作为参数传递给另一个 bat 文件,它将此错误消息存储到数据库中。

这里<p>标签和Error Message这个词是静态输入的。除此之外,Teradata 返回的错误消息最后有一个换行符。由于这个换行符,批处理脚本无法正确读取参数列表并且 bat 脚本失败,因此脚本无法捕获错误消息。

<p>Error Message:  *** Failure 3807 SP_StoredProcedure:Object 'DB_Name.TableName' does not exist.

</p>

我需要实现的是错误消息在从 Teradata 生成时不应包含新行,或者在作为参数传递给第二个 bat 文件之前应使用字符串解析操作删除新行。已尝试使用 TRIM 和 REPLACE 函数来删除换行符,但这没有帮助。即使在那之后换行符也在那里。

检查是否存在符号时,显示如下:

正在寻找一种解决方案,当 Teradata 遇到此错误时,错误消息不包含换行符。

默认情况下 .SET WIDTH 属性 的值为 75 个字符。 这恰好由 Teradata 明确声明。

如果TD BTEQ脚本返回的错误字符串长度为200个字符。然后 75 个字符之后的所有内容都将移动到另一行,因为 .SET WIDTH 75 标记 75 个字符之后的行尾,这意味着 \n 出现在 75 个字符之后。类似地,150 个字符之后的所有内容都将移动到带有 \n character 的另一行,其余 151 到 200 个字符之间的所有字符将在第三行结束。

A \n 即命令任务的参数中不欢迎换行符,由于这个换行符,命令任务脚本最终因输入参数列表无效而被破坏。

要更改此设置,请在 bteq 脚本中使用以下命令:

.SET WIDTH 65531;

允许的最小宽度为 .SET WIDTH 20,允许的最大宽度为 .SET WIDTH 65531

.SET WIDTH 属性 应该定义在 bteq 文件的开头

有关同一结帐的进一步参考,请查看来自 TD 的 documentation