sys*_*end 3 oracle plsql oracle-sqldeveloper
我在这里尝试一些非常简单的东西,只是创建一个包和它的包体。这是我的代码(来自oracle 文档):
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 ;
/
Run Code Online (Sandbox Code Playgroud)
编译时,我收到此错误:
错误(4,1):PLS-00103:遇到符号“/”
我之前使用“/”创建触发器没有任何问题,所以我不知道问题出在哪里。我尝试删除“/”,这给了我“遇到创建”错误。
我正在 Oracle 11g 数据库上使用 SQLDeveloper。
您的代码:
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 ;
/
Run Code Online (Sandbox Code Playgroud)
此代码块是一个脚本,它创建两个对象,一个 PACKAGE 和一个 PACKAGE BODY。
SQL Developer 中的代码编辑器设计用于处理单个代码对象。你可以复制和粘贴第一个或第二个代码对象,没有“/”,你会没事的。
如果要执行整个块,可以将其放入SQL Worksheet,然后按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 在执行之前显示缓冲区中的命令或块。/(slash) 执行缓冲区中的命令或块而不首先显示它。有关编辑存储在缓冲区中的命令或块的信息,请参阅在 SQL*Plus 命令行中编辑脚本。