oracle 我从bash向一个sqlplus语句传递了一个参数,但该参数将之后的所有脚本作为参数,如何避免这个问题?

ghhkc1vu  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(103)

我有一个bash脚本
$sqlplusconn是到我的带有sqlplus的Oracle示例的连接
$foo是一个数字

$sqlplusconn << EOF
BEGIN
    @bar.sql $foo
    @foo.sql $foo
  COMMIT;
EXCEPTION
 WHEN OTHERS THEN
 ROLLBACK;
END;

[... other stuff]

问题是,当我执行shell脚本时,$foo被传递给了sql脚本,但是所有在参数之后的“其他东西”都作为参数传递给了sql脚本。当我读到异常时,它声明“COMMIT”作为参数传递。我有问题,但我不知道如何解决
我试图在@foo.sql $mytvariable语句的末尾加上一个问号,但没有成功。

sg3maiej

sg3maiej1#

所以我认为你想要的是运行两个SQL脚本,并假设它们工作,然后提交。如果有什么失败了,就把它卷回去。如果是这样的话,这里有一个解决方案:

$sqlplusconn << EOF
WHENEVER SQLERROR EXIT ROLLBACK
@bar.sql $foo
@foo.sql $foo
COMMIT;
EOF

相关问题