PLS-00382: Ausdruck hat falschen Typ in Oracle-cursor

Ich geschrieben habe, einen cursor in oracle 11g wie folgt:

DECLARE CURSOR QnA_cursor IS 
        SELECT activity_id, question, answer 
        FROM TABLE1
        WHERE question != 'surveyText'
        ORDER BY activity_id, question;

        cur_count       INT := 1;
        que             NVARCHAR2(10);
        ans             NVARCHAR2(10);
        sqlCommand      NVARCHAR2(500);
        RowCountVar     INT;
    BEGIN
        FOR QueAns
        IN QnA_cursor
        LOOP
            IF cur_count = 4 THEN cur_count := 1; END IF;   /* We have only 3 questions for each activity_id */
            que := 'question' || cur_count;     /* question1, question2, question3 */
            ans := 'answer' || cur_count;       /* answer1, answer2, answer3 */

            sqlCommand := 'UPDATE TABLE2 SET '||que||' = :1, '||ans||' = :2 WHERE activity_id = :3';
            EXECUTE IMMEDIATE sqlCommand USING QueAns.question, QueAns.answer, QueAns.activity_id;

            cur_count := cur_count + 1;
        END LOOP;
    END;

Dies ist das schema für TABLE1 und TABLE2:

Create table TABLE2(
ACTIVITY_ID             NUMERIC(19,0),
QUESTION1               NVARCHAR2(2000),
ANSWER1                 NVARCHAR2(2000),
QUESTION2               NVARCHAR2(2000),
ANSWER2                 NVARCHAR2(2000),
QUESTION3               NVARCHAR2(2000),
ANSWER3                 NVARCHAR2(2000)
)

Create table TABLE1(
ACTIVITY_ID             NUMERIC(19,0),
QUESTION                NVARCHAR2(2000),
ANSWER                  NVARCHAR2(2000)
)

Wenn ich versuche zu kompilieren es in sqldeveloper, ich erhalte folgenden Fehler in der Zeile, wo führe ich die dynamische Abfrage "AUSFÜHREN IMMMEDIATE':

PLS-00382: expression is of wrong type

Ich gespielt habe, um ihn herum eine Menge, aber konnte nicht herausfinden, der Grund. Die Daten-Typen sind die gleichen für die entsprechenden Spalten in der Tabelle. Können Sie mir bitte sagen, was ein problem sein kann?

InformationsquelleAutor keenUser | 2014-06-02
Schreibe einen Kommentar