我想再次询问我的程序,这是示例:
第一的,
CREATE OR REPLACE procedure proc10(pnik in varchar2, pposition in varchar2)
IS
v_error_message varchar2(255);
CURSOR cuser IS
SELECT userid FROM mstuser WHERE nik = pnik;
CURSOR crole IS
SELECT distinct role FROM mstrole;
BEGIN
FOR cdata IN cuser
LOOP
BEGIN
IF pposition IN crole THEN
BEGIN
.........
END;
END IF;
END;
END LOOP;
END;
它有这样的错误:
[Error] PLS-00405 (11: 29): PLS-00405: subquery not allowed in this context
然后我将子查询放入这样的游标中:
CREATE OR REPLACE procedure proc10(pnik in varchar2, pposition in varchar2)
IS
v_error_message varchar2(255);
CURSOR cuser IS
SELECT userid FROM mstuser WHERE nik = pnik;
CURSOR crole IS
SELECT distinct role FROM mstrole;
BEGIN
FOR cdata IN cuser
LOOP
BEGIN
IF pposition IN crole THEN
BEGIN
.........
END;
END IF;
END;
END LOOP;
END;
但是当我执行此过程时,它会出现如下错误:
[Error] PLS-00103 (13: 29): PLS-00103: Encountered the symbol "CROLE" when expecting one of the following: (
我把括号放在“CROLE”上(来自@PM 77-1的建议),如下所示:
CREATE OR REPLACE procedure proc10(pnik in varchar2, pposition in varchar2)
IS
v_error_message varchar2(255);
CURSOR cuser IS
SELECT userid FROM mstuser WHERE nik = pnik;
CURSOR crole IS
SELECT distinct role FROM mstrole;
BEGIN
FOR cdata IN cuser
LOOP
BEGIN
IF pposition IN (crole) THEN
BEGIN
.........
END;
END IF;
END;
END LOOP;
END;
它有这样的新错误:
[Error] PLS-00320 (13: 30): PLS-00320: the declaration of the type of this expression is incomplete or malformed
我应该怎么做才能解决这个问题?请帮助谢谢。