私はPL/SQLを初めて使用し、プロシージャを作成しましたが、エラーを見つけることができませんでした.
実装の詳細:
私はいくつかのカーソルを使用してテーブルを走査し、ネストされたテーブルに関連データを格納しています(TYPE .. IS TABLE OF varchar(8))
。
具体的には、テーブルの前提条件には、特定のコースの前提条件コースが格納されます。特定のコースの直接の前提条件と、もしあれば前提条件の前提条件を見つけなければなりません。
Code:
precoll こちらは、
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:
:= . ( @ % ;
2 つ目の質問ですが、prelist は precoll の変数です (TYPE precoll IS TABLE of varchar2(8);) varchar のテーブルなので、select クエリで TYPE precoll をクエリできますか?