在 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
请解释一下这里发生了什么。看起来包裹被丢弃了两次。是否可以避免该错误?
SQLplus命令执行的规则基本上是:
- 当遇到分号时执行当前文本。因此,如果一行不以分号结尾,则继续收集当前文本。
- 如果你遇到
DECLARE
or BEGIN
,收集所有文本并且不对分号执行
- 如果遇到斜线(
/
),执行收集的文本。
所以在你的情况下发生的是,分号和斜杠都执行DROP
声明。
要修复它,请删除斜杠。
如果您有一个 PL/SQL 块,则只需要斜杠,该块总是带有一个END
陈述。其他所有内容都使用分号。
注:以上规则经过简化。实践中更复杂。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)