【问题标题】:PLSQL Nonsense (?) Error PLS-00103 in Package and Package BodyPLSQL 废话 (?) 包和包正文中的错误 PLS-00103
【发布时间】:2018-04-12 23:31:20
【问题描述】:

我得到了一个我认为是一个程序的荒谬错误。

CREATE OR REPLACE PACKAGE reg AS
    TYPE ref_cursor IS ref cursor;
    ...
    FUNCTION show_enrollments RETURN ref_cursor;
    PROCEDURE return_prereqs
        (param_dept_code IN prerequisites.dept_code%type,
        param_course_no IN prerequisites.course_no%type);
>   PROCEDURE enroll
>       (param_sid IN enrollments.sid%type,
>       param_classid IN enrollments.classid%type,
>       err_msg OUT varchar(76));
    PROCEDURE delete_student
        (param_sid IN enrollments.sid%type);
    ...
END;
/
show errors

我收到的包裹错误

 LINE/COL ERROR
 -------- -------
 31/23    PLS-00103: Encountered the symbol "(" when expecting one of the
          following:
          := . ) , @ % default character
          The symbol ":=" was substituted for "(" to continue.

我得到的包体错误

 LINE/COL ERROR
 -------- -------
 328/23   PLS-00103: Encountered the symbol "(" when expecting one of the
          following:
          := . ) , @ % default character
          The symbol ":=" was substituted for "(" to continue.

这是包体中的过程

PROCEDURE enroll
    (param_sid IN enrollments.sid%type,
    param_classid IN enrollments.classid%type,
    err_msg OUT varchar(76)) 
IS...

我在这里做傻事吗?我看不出有什么问题,这很令人沮丧。

【问题讨论】:

    标签: database oracle plsql pls-00103


    【解决方案1】:

    我很确定它是 err_msg OUT varchar(76),因为 Oracle 中没有 VARCHAR 数据类型,而只有 VARCHAR2

    试试:

    PROCEDURE enroll
        (param_sid IN enrollments.sid%type,
        param_classid IN enrollments.classid%type,
        err_msg OUT varchar2(76)) 
    IS...
    

    更多信息请参见SQL Data Types in the PL/SQL Language Reference

    【讨论】:

    • 当我最初收到错误时,我将它从 varchar2 更改为 varchar。把它改回来给了我一些关于 PROCEDURE 被静态或其他东西取代的信息。我将它回滚到它工作的时候并重新实现了添加,现在它似乎正在工作。感谢您的尝试:)
    【解决方案2】:

    您好,请按以下方式从程序中删除尺寸:

      PROCEDURE enroll
           (param_sid IN enrollments.sid%type,
           param_classid IN enrollments.classid%type,
           err_msg OUT varchar2);
    

    这里我也改了名字,但你可以保留你的

    有大小:

    删除大小后:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-12
      • 2020-09-10
      • 1970-01-01
      • 2021-08-11
      • 2020-01-15
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      相关资源
      最近更新 更多