0

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

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...

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

4

2 回答 2

2

我很确定这是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...

有关详细信息,请参阅PL/SQL 语言参考中的 SQL 数据类型

于 2018-04-13T00:18:48.480 回答
1

您好,请从以下过程中删除尺寸:

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

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

带尺寸:

在此处输入图像描述

删除大小后:

在此处输入图像描述

于 2018-04-13T05:36:17.013 回答