【发布时间】:2016-11-16 16:15:47
【问题描述】:
我有一个 Ant 脚本来执行 SQL 和 PL/SQL 过程。
<exec executable="sqlplus" failonerror="true" >
<arg value="${user}/${password}@${DB}" />
<arg value="@${scriptFilename}" />
</exec>
以上代码执行 SQL 脚本和包,但不执行如下过程:
BEGIN
-- drop functions
FOR R IN (
SELECT owner, object_name
FROM all_objects
WHERE owner='FCPOTP'
AND OBJECT_TYPE IN ('FUNCTION'))
LOOP
EXECUTE IMMEDIATE 'drop function '||R.owner||'.'||R.object_name;
END LOOP;
-- drop procedure
FOR R IN (
SELECT owner, object_name
FROM all_objects
WHERE owner='FCPOTP'
AND OBJECT_TYPE IN ('PROCEDURE'))
LOOP
EXECUTE IMMEDIATE 'drop procedure '||R.owner||'.'||R.object_name;
END LOOP;
END;
如何使用相同的 exec sqlplus 可执行文件来执行所有操作?
【问题讨论】:
-
它是如何“失败”的——你得到了什么错误?这真的是过程的一部分,还是匿名块?如果您通过 SQL*Plus 手动运行,会发生什么?
-
@AlexPoole - 我没有收到任何错误。但是该块没有被执行。它只是说 [exec] 连接到: [exec] Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production [exec] 使用分区选项 [exec] [exec] 36 与 Oracle Database 11g Enterprise Edition Release 11.2 断开连接。 0.4.0 - 64 位生产 [exec] 带有分区选项 [echo] ===== End ===== [echo]
-
最好在问题中显示该输出,以便正确格式化。但我明白了它的要点。
标签: jenkins ant exec executable sqlplus