oracle - 创建oracle包遇到PLS-00103 : Encountered the symbol "CREATE"

标签 oracle plsql pls-00103

我正在使用 Oracle sql Developer 编写一个 oracle 包,我收到此编译错误:

Error(7,1): PLS-00103: Encountered the symbol "CREATE" .

create or replace
PACKAGE TestPackage AS 
 FUNCTION beforePopulate RETURN BOOLEAN;
 FUNCTION afterPopulate RETURN BOOLEAN;
END TestPackage;

CREATE OR REPLACE PACKAGE BODY TestPackage AS
   FUNCTION beforePopulate RETURN BOOLEAN AS
   BEGIN
      DELETE FROM TEST_1;
      INSERT INTO TEST_1
      SELECT * FROM TEST WHERE VALUE=300;
      COMMIT;
      RETURN TRUE;
     EXCEPTION
       WHEN OTHERS THEN
        RETURN FALSE;
   END;
   FUNCTION afterPopulate RETURN BOOLEAN AS
     BEGIN
         UPDATE TEST SET RESULT="completed" WHERE VALUE=300;
            COMMIT;
         RETURN TRUE;
         EXCEPTION
           WHEN OTHERS RETURN FALSE;
        END;
  END;
END TestPackage;

如果我在第 6 行添加 /,错误将变为:

Error(6,1): PLS-00103: Encountered the symbol "/"

我厌倦了这样的空实现:

create or replace 
package package1 as 
END PACKAGE1;

CREATE OR REPLACE 
package body package1 as 
end package1;

我也犯了同样的错误。

最佳答案

当你有 BEGIN、END 等时,你就处于 PL/SQL 中,而不是 SQL 中。

PL/SQL block 需要在行首用单个(“正向”)斜杠终止。这告诉 Oracle 您已完成 PL/SQL block ,因此它会编译该文本 block 。

SQL 查询 - 以分号终止:

update orders set status = 'COMPLETE' where order_id = 55255;

PL/SQL block - 命令用分号分隔, block 由正斜杠终止:

create or replace procedure mark_order_complete (completed_order_id in number)
is
begin
     update orders set status = 'COMPLETE' where order_id = :completed_order_id;
end mark_order_complete;
/

关于oracle - 创建oracle包遇到PLS-00103 : Encountered the symbol "CREATE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9231788/

相关文章:

sql - 分布式查询是否禁用绑定(bind)窥视?

oracle - 从具有复杂输入和输出类型的 JDBC 调用 Oracle 存储过程

sql - PL SQL Oracle PLS-00103 : Encountered the symbol “CREATE”

plsql - PLS-00103 函数结束时出错

c++ - 关于 setDataBuffer (OCCI) 包装器的实践

mysql - 使用 WHERE 语句为每个 ID 选择一行

oracle - 为什么 plsql_profiler 没有产生数据行?

oracle - ORA-06550 和 PLS-00103

sql - FROM子句中的join和WHERE子句有什么区别?

使用 Oracle 11g 的 Oracle 开发人员 VM