小编典典

SQLPlus尝试两次删除软件包

sql

在SQLPlus中执行脚本时,遇到了一个问题:

script.sql包含以下几行

@some_pkg.pks
@some_pkg.pkb

drop package some_pkg;
/

打电话后

> sqlplus用户/密码@dbname @ script.sql

控制台中显示以下消息:

Package created.
Package body created.
Package dropped.

drop package some_pkg;
*
ERROR at line 1:
ORA-04043: object SOME_PKG does not exist

请解释一下这里发生了什么。好像包裹被丢了两次。有可能避免该错误吗?


阅读 171

收藏
2021-04-14

共1个答案

小编典典

SQLplus命令执行的规则基本上是:

  • 遇到分号时,请执行当前文本。因此,如果一行不以分号结尾,则将继续收集当前文本。
  • 如果遇到DECLAREBEGIN,请收集所有文本,并且不要使用分号执行
  • 如果遇到斜线(/),请执行收集的文本。

因此,在您的情况下,分号和斜杠都执行了DROP语句。

要修复它,请删除斜杠。

仅当您有一个PL / SQL块(始终带有一条END语句)时,才需要斜杠。对其他所有内容使用分号。

注意:以上规则已简化。实际上更复杂。

2021-04-14