1

以下是 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 遇到此错误时错误消息不包含换行符的解决方案。

4

1 回答 1

2

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

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

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

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

.SET WIDTH 65531;

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

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

有关同一结帐的进一步参考,请查看 TD 的此文档

于 2021-04-23T02:21:56.420 回答