Я новичок в PL/SQL, написал процедуру и не смог обнаружить ошибку.
Детали реализации:
Я использую несколько курсоров для перемещения по таблице и сохранения некоторых важных данных во вложенной таблице (TYPE .. IS TABLE OF varchar(8))
.
В частности, таблица предварительных требований хранит предварительные курсы данного курса. Мне нужно найти непосредственные пререкы данного курса и пререкы пререков, если таковые имеются.
Код:
преколл здесь,
TYPE precoll IS TABLE of varchar2(8);
объявлен в пакете, а процедура ниже находится в теле пакета. Процедура:
procedure disp_prereq(p_dept_code IN varchar2, p_courseno IN number, c_prereq OUT SYS_REFCURSOR)
IS
counter INTEGER ;
preserved INTEGER ;
prelist precoll := precoll();
row prerequisites%ROWTYPE;
BEGIN
counter := 1;
preserved := 1;
cursor cr is select * from prerequisites where dept_code = p_dept_code and course# = p_courseno;
open cr;
loop
fetch cr into row;
exit when row%notfound;
prelist(counter) := (row.pre_dept_code || row.pre_course#) ;
counter := counter + 1;
end loop;
close cr;
preserved := prelist.count;
preserved := preserved + 1;
counter := 1;
cursor indr is select * from prerequisites;
open indr;
loop
fetch indr into row;
exit when row%notfound;
if (prelist(counter) = (m.dept_code||m.course#)) then
prelist(preserved) := m.pre_dept_code||m.pre_course# ;
preserved := preserved + 1;
end if;
counter := counter + 1;
end loop;
close indr;
open c_prereq FOR select * from prelist;
END disp_prereq;
и сообщение об ошибке дало мне:
62/9 PLS-00103: Encountered the symbol "CR" when expecting one of the
following:
:= . ( @ % ;
И мой второй вопрос, предварительный список - это переменная precoll (TYPE precoll IS TABLE of varchar2 (8);) Могу ли я запросить TYPE precoll с помощью запроса выбора, потому что это таблица varchar?
CR
должно быть перемещено перед ключевым словомbegin
(в разделе объявлений). - person Egor Skriptunoff   schedule 29.04.2013