我有一个Ant脚本来执行SQL和PL / SQL过程。
import math
def is_prime(n):
for i in range(2, int(math.sqrt(n))+1):
if n % i == 0:
return False
return True
上面的代码执行SQL脚本和包,但不执行以下过程:
http://localhost:8080/AkademikSOAP/Service
如何使用相同的<exec executable="sqlplus" failonerror="true" >
<arg value="${user}/${password}@${DB}" />
<arg value="@${scriptFilename}" />
</exec>
可执行文件执行所有操作?
答案 0 :(得分:2)
您没有收到错误,并且在评论的输出中您看不到正在执行的块。那是因为它不是。 From the documentation:
SQL * Plus存储您在SQL缓冲区中输入的子程序。使用RUN或斜杠(/)命令执行当前子程序。分号(;)被视为PL / SQL子程序的一部分,不会执行命令。
目前,您的匿名阻止(子程序)正在进入“SQL缓冲区”,但永远不会被执行。
您只需在匿名阻止后添加/
脚本文件:
...
LOOP
EXECUTE IMMEDIATE 'drop procedure '||R.owner||'.'||R.object_name;
END LOOP;
END;
/