我在这里尝试一些非常简单的东西,只是创建一个包和它的包体。这是我的代码(来自oracle文档):
创建或替换PACKAGE emp_bonus_2 AS 程序calc_bonus(…
事实证明这是我的错。当我尝试从包编辑器选项卡(Packages - > emp_bonus_2)编译代码时,它失败了。 将所有代码移动到工作表并执行它工作正常。
你的代码:
create or replace PACKAGE emp_bonus_2 AS PROCEDURE calc_bonus (date_hired number); END emp_bonus_2; / CREATE PACKAGE BODY emp_bonus_2 AS PROCEDURE calc_bonus (date_hired number) IS BEGIN DBMS_OUTPUT.PUT_LINE ('Employees hired on ' || date_hired || ' get bonus.'); END; END emp_bonus_2 ; /
此代码块是一个创建两个对象的脚本,PACKAGE和PACKAGE BODY。
SQL Developer中的代码编辑器设计用于处理单个代码对象。你可以复制并粘贴第一个或第二个代码对象,没有'/',你会没事的。
如果要执行整个块,可以将其放入SQL工作表中,然后使用F5运行。
'/'告诉SQL Developer你已经完成了PL / SQL代码。从数据库的角度来看,这没有任何意义,因此当您在代码编辑器中包含它时也会发生错误 - 这也是发送到数据库的错误。
当你在SQL工作表中执行它时,SQL Developer会看到'/'并且啊,那就是那段代码的结束,执行它,然后重新开始。 '/'永远不会进入数据库本身。
请注意,在SQL Plus中,'/'也可以表示 - '再次运行那段代码。'在为SQL Plus构建部署脚本时,这可能会导致问题,因为您已经添加了一个
文件
SQL缓冲区SQL缓冲区存储最近输入的SQL 命令或PL / SQL块(但不是SQL * Plus命令)。命令或 块保留在缓冲区中,直到被下一个SQL命令替换或 PL / SQL块。您可以使用LIST命令查看缓冲区内容。 您可以使用RUN在SQL缓冲区中执行命令或块 或/(斜杠)命令。 RUN在缓冲区中显示命令或块 在执行之前。 /(斜杠)执行命令或块 缓冲区而不先显示它。有关编辑的信息 存储在缓冲区中的命令或块请参阅SQL * Plus中的编辑脚本 命令行。
SQL缓冲区SQL缓冲区存储最近输入的SQL 命令或PL / SQL块(但不是SQL * Plus命令)。命令或 块保留在缓冲区中,直到被下一个SQL命令替换或 PL / SQL块。您可以使用LIST命令查看缓冲区内容。
您可以使用RUN在SQL缓冲区中执行命令或块 或/(斜杠)命令。 RUN在缓冲区中显示命令或块 在执行之前。 /(斜杠)执行命令或块 缓冲区而不先显示它。有关编辑的信息 存储在缓冲区中的命令或块请参阅SQL * Plus中的编辑脚本 命令行。