创建oracle包遇到PLS-00103:遇到符号“CREATE";

create oracle package encountered PLS-00103: Encountered the symbol quot;CREATEquot;(创建oracle包遇到PLS-00103:遇到符号“CREATE;)
本文介绍了创建oracle包遇到PLS-00103:遇到符号“CREATE";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am writing an oracle package using Oracle sql developer, I got this compile error:

错误(7,1):PLS-00103:遇到符号CREATE".

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 行添加 /,错误变成:

If I add a / at line 6, the error became:

错误(6,1):PLS-00103:遇到符号/"

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

我厌倦了这样一个空的实现:

I tired an empty implementation like this:

create or replace 
package package1 as 
END PACKAGE1;

CREATE OR REPLACE 
package body package1 as 
end package1;

我也犯了同样的错误.

推荐答案

当你有 BEGIN、END 等时,你是在 PL/SQL,而不是 SQL.

When you have BEGIN, END, etc you are in PL/SQL, not SQL.

PL/SQL 块需要在行的最开始用一个(正向")斜线终止.这告诉 Oracle 您已经完成了 PL/SQL 块,因此它会编译该文本块.

A PL/SQL block needs to be terminated with a single ("forward") slash at the very beginning of the line. This tells Oracle that you are done with your PL/SQL block, so it compiles that block of text.

SQL 查询 - 以分号终止:

SQL query - terminated by semicolon:

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

PL/SQL 块 - 命令以分号分隔,块以正斜杠终止:

PL/SQL block - commands separated by semicolon, block is terminated by forward-slash:

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包遇到PLS-00103:遇到符号“CREATE";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

SQL to Generate Periodic Snapshots from Transactions Table(用于从事务表生成定期快照的SQL)
MyBatis support for multiple databases(MyBatis支持多个数据库)
Oracle 12c SQL: Missing column Headers in result(Oracle 12c SQL:结果中缺少列标题)
SQL query to find the number of customers who shopped for 3 consecutive days in month of January 2020(查询2020年1月连续购物3天的客户数量)
How to get top 10 data weekly (This week, Previous week, Last month, 2 months ago, 3 month ago)(如何每周获取前十大数据(本周、前一周、上个月、2个月前、3个月前))
Select the latest record for an Id per day - Oracle pl sql(选择每天ID的最新记录-Oracle pl SQL)