gpt4 book ai didi

SQLPlus 试图删除包两次

转载 作者:行者123 更新时间:2023-12-01 09:24:14 26 4
gpt4 key购买 nike

在 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命令执行的规则基本上是:

  • 遇到分号时执行当前文本。因此,如果一行不以分号结尾,则继续收集当前文本。
  • 如果您遇到DECLAREBEGIN , 收集所有文本,不要在分号处执行
  • 如果遇到斜杠 ( / ),请执行收集的文本。

  • 所以在你的情况下会发生什么,分号和斜杠都执行 DROP声明。

    要修复它,请删除斜线。

    如果你有一个 PL/SQL 块,你只需要斜线,它总是带有 END陈述。对其他所有内容使用分号。

    注意:以上规则是简化的。在实践中更复杂。

    关于SQLPlus 试图删除包两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28209880/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com