如果执行脚本时发生错误,如何退出hdbsql?

2020-08-31 05:05发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在使用HANA hdbsql 来执行包含许多SQL语句的SQL脚本。 我希望它立即停止处理输入文件,并在任何语句得到错误后立即以错误代码退出。 有没有办法做到这一点? 在Oracle的sqlplus中,通过"每当sqlerror退出sql.sqlcode"启用此功能。 我在hdbsql文档中没有找到类似的东西。 如果没有此功能,则很难创建有效的脚本。 您必须能够检测到什么时候不起作用并停止。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在使用HANA hdbsql 来执行包含许多SQL语句的SQL脚本。 我希望它立即停止处理输入文件,并在任何语句得到错误后立即以错误代码退出。 有没有办法做到这一点? 在Oracle的sqlplus中,通过"每当sqlerror退出sql.sqlcode"启用此功能。 我在hdbsql文档中没有找到类似的东西。 如果没有此功能,则很难创建有效的脚本。 您必须能够检测到什么时候不起作用并停止。

付费偷看设置
发送
4条回答
当学会了学习
1楼 · 2020-08-31 05:43.采纳回答

对于HDAsql,HANA 2(我的版本是2.3.119)可以通过使用-E <错误代码>命令行参数来实现。

例如,使用如下脚本:

> cat test.sql
 从哑元中选择" 1",current_timestamp;
 插入测试值(1,'YYY');
 从哑元中选择'2',current_timestamp;
 

以及对第一个值具有主键约束的表,当我多次运行脚本时,应该会收到一条错误消息。

> ./hdbsql -U HXEDEV-  E 5 -I test.sql

 '1',CURRENT_TIMESTAMP
 " 1"," 2019-10-31 14:20:51.844000000"

 * 301:违反唯一约束:表(TEST)错误:在表HXE :: SYSTEM:TEST $ delta_1 $ en的pos = 0上违反唯一约束,键:AAA = 1已存在,因为udiv = 1 SQLSTATE:23000

 > 

该脚本现在已停止,并且退出了hdbsql。 错误代码应为5(如我们指定的-E 5):

> echo $?
 5 

因此,"它可以在我的机器上运行!" ;-)

干杯,

Tong__Ming
2楼-- · 2020-08-31 05:54

啊哈! " -E <退出代码>"谢谢,拉斯。

-E选项未在我所查看的《用于SAP HANA平台的SAP HANA管理指南》(第14章-SAP HANA HDBSQL参考)中记录。 如果您键入" hdbsql-?",它会显示在用法文本中。 所以至少它在那里。

SAP注意:您需要更新文档!

渐行渐远_HoldOn
3楼-- · 2020-08-31 05:59

您好,

恐怕当前我们无法取消它们。 。

谢谢。

软件心理学工程师
4楼-- · 2020-08-31 06:01

感谢您的回答,尽管不是我希望的。 就像我在上面说的那样,没有此功能使创建有效的脚本非常困难。

一周热门 更多>