运行程序时出现错误 PLS-00103

Posted

技术标签:

【中文标题】运行程序时出现错误 PLS-00103【英文标题】:error PLS-00103 while running a procedure 【发布时间】:2017-10-15 10:17:51 【问题描述】:

我是 plsql 的新手,并试图实现一个使用过程来执行某些任务的代码。我正在使用 oracle 10g。我已经制作了一个名为 stu_pack 的包,并且正在尝试制作包体,但徒劳无功。请帮助. 我想制定一个程序,为给定课程名称提供学生详细信息。 代码如下。

错误信息是:

第 14 行出现错误:PLS-00103:遇到符号“PROCEDURE”时 期待以下之一:;删除之前存在

符号“;”已替换为“PROCEDURE”以继续。

创建或替换包体 stu_pack 为 过程 proc1(cname IN number) as l_cname number(2);

    CREATE OR REPLACE PACKAGE BODY stu_pack AS

    PROCEDURE proc1 (
        cname IN NUMBER
    ) AS

        l_cname   NUMBER(2);
        cur1      student%rowtype;
        CURSOR c1 IS SELECT
            s.*
                     FROM
            student s,
            course c,
            learn l
                     WHERE
            c.cname = l_cname
            AND   c.cid = l.cid
            AND   s.sid = l.sid;

    BEGIN
        OPEN c1;
        LOOP
            FETCH c1 INTO cur1;
            EXIT WHEN c%notfound;
            dbms_output.put_line('student roll number:'
            || cur1.sid
            || ' student 
          name:'
            || cur1.sname
            || ' phone number:'
            || cur1.phone);

        END LOOP;

        CLOSE c1;
    END procedure proc1;

END stu_pack;
/

【问题讨论】:

请提供完整的错误信息。 错误信息是 :ERROR at line 14: PLS-00103: Encountered the symbol "PROCEDURE" when expecting 以下之一:;删除前面存在的符号“;”替换为“PROCEDURE”继续。 1. 创建或替换包体 stu_pack 为 2. 过程 proc1(cname IN number) 为 3. l_cname number(2); 【参考方案1】:

需要换行end procedure proc1;

应该很简单

end;

end proc1;

【讨论】:

以上是关于运行程序时出现错误 PLS-00103的主要内容,如果未能解决你的问题,请参考以下文章

执行存储过程“PLS-00103”时出现此错误

匿名程序的 PLS-00103 错误

oracle - PLS-00103 & ORA -06550 关于程序

Oracle 存储过程运行时错误与 pls 00103

有序列错误的程序 - PLS-00103 发生需要指导

程序错误 - PLS-00103 遇到符号“>”