Oracle 遇到符号“/&引用;在编译包时

Oracle 遇到符号“/&引用;在编译包时,oracle,plsql,oracle-sqldeveloper,Oracle,Plsql,Oracle Sqldeveloper,我在这里尝试一些非常简单的方法,只是创建一个包和它的包体。这是我的代码(来自): 编译时,出现以下错误: 错误(4,1):PLS-00103:遇到符号“/” 我以前使用“/”创建触发器没有任何问题,所以我不知道问题出在哪里。我试图删除“/”,这给了我一个“遇到创建”错误 我正在Oracle11g数据库上使用SQLDeveloper。结果证明这是我的错。当我试图从包编辑器选项卡(Packages->emp\u bonus\u 2)编译代码时,它失败了。 将所有代码移到工作表中并执行,效果很好。您的

我在这里尝试一些非常简单的方法,只是创建一个包和它的包体。这是我的代码(来自):

编译时,出现以下错误:

错误(4,1):PLS-00103:遇到符号“/”

我以前使用“/”创建触发器没有任何问题,所以我不知道问题出在哪里。我试图删除“/”,这给了我一个“遇到创建”错误


我正在Oracle11g数据库上使用SQLDeveloper。

结果证明这是我的错。当我试图从包编辑器选项卡(Packages->emp\u bonus\u 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 ;
/
这个代码块是一个脚本,它创建两个对象,一个包和一个包体

SQL Developer中的代码编辑器设计用于处理单个代码对象。您可以复制并粘贴第一个或第二个代码对象,不带“/”,这样就可以了

如果要执行整个块,可以将其放入SQL工作表中,并使用F5运行

“/”告诉SQL开发人员您已经完成了PL/SQL代码。从数据库的角度来看,这没有任何意义,因此在代码编辑器中包含这一内容时会出现错误——代码编辑器也会发送到数据库

当您在SQL工作表中执行该操作时,SQL开发人员会看到“/”并开始,啊,这是该代码位的结尾,执行它,然后重新开始。“/”永远不会进入数据库本身

请注意,在SQL Plus中,“/”还可以表示-“再次运行该代码。”这可能会在为SQL Plus构建部署脚本时产生问题,因为您添加了

SQL缓冲区SQL缓冲区存储最近输入的SQL 命令或PL/SQL块(但不是SQL*Plus命令)。命令或 块保留在缓冲区中,直到被下一个SQL命令或 PL/SQL块。您可以使用LIST命令查看缓冲区内容

您可以使用RUN命令在SQL缓冲区中执行命令或块 或/(斜杠)命令。RUN在缓冲区中显示命令或块 在执行之前/(斜杠)执行中的命令或块 缓冲区,而不首先显示它。有关编辑文档的信息,请参见 存储在缓冲区中的命令或块请参见SQL*Plus中的编辑脚本 命令行


也许您可以在包编辑器中编译代码,只需将包规范和主体分开(我使用SQL Developer已经有一段时间了,但PLSQL Developer在其程序窗口中也做了类似的操作。@APC是的,可以工作,也不需要/then
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 ;
/