Q: Oracle: [Ошибка] PLS-00103 (13: 29): PLS-00103: Обнаружен символ "CROLE" при ожидании одного из следующего: (
Я хочу спросить еще раз о моей процедуре, это пример:
первый,
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
что я должен сделать, чтобы это исправить? Пожалуйста, помогите спасибо, прежде чем.