PLSQL-бессмысленная (?) Ошибка PLS-00103 в пакете и теле пакета
Я получаю то, что я считаю бессмысленной ошибкой для процедуры.
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...
Я делаю что-то глупое здесь? Я не вижу, что не так, и это довольно расстраивает.
2 ответа
Я уверен, что это err_msg OUT varchar(76)
как нет VARCHAR
тип данных в Oracle, но только VARCHAR2
,
Пытаться:
PROCEDURE enroll
(param_sid IN enrollments.sid%type,
param_classid IN enrollments.classid%type,
err_msg OUT varchar2(76))
IS...
См. Типы данных SQL в Справочнике по языку PL/SQL для получения дополнительной информации.
Здравствуйте, пожалуйста, удалите размер из процедуры следующим образом:
PROCEDURE enroll
(param_sid IN enrollments.sid%type,
param_classid IN enrollments.classid%type,
err_msg OUT varchar2);
здесь у меня также есть смена имени, но вы можете сохранить свой
С размером:
После удаления размера: