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-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

我应该怎么做才能解决这个问题?请帮助谢谢。

4

0 回答 0