Jens
Jens

Reputation: 1

how to solve db2 code: -104, SQL State: 42601

--/
BEGIN
     FOR V AS MYCURSOR CURSOR FOR SELECT ID,NAME,AGE FROM PEOPLE
     DO
        BEGIN
            INSERT INTO PERSON(NAME,AGE) VALUES(V.NAME,V.AGE);
        END;
     END FOR;
END;
/

DB tool is Dbvisualizer 10.0.1, so I need "--/" and "/"

Message: [Code: -104, SQL State: 42601] An unexpected token "V" was found following "BEGIN FOR ". Expected tokens may include: "JOIN".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.22.29 Help plz.

Upvotes: 0

Views: 10246

Answers (2)

Jit Sarkar
Jit Sarkar

Reputation: 17

You must use different Statement Delimiter / Terminator to run compound statements. Every client tool has its own methods of setting it. Dbvisualizer:

Tools\Tool Properties\SQL Commander\Statement Delimiters: SQL Statement Delimiter:
SQL Statement Delimiter 1: @
SQL Statement Delimiter 2: @
Using the DBMS Output Tab:

Only in DbVisualizer DbVisualizer Pro edition. This feature is only available in the DbVisualizer Pro edition.

BEGIN FOR V AS MYCURSOR CURSOR FOR SELECT ID,NAME,AGE FROM PEOPLE DO BEGIN INSERT INTO PERSON(NAME,AGE) VALUES(V.NAME,V.AGE); END; END FOR; END @

Upvotes: 0

Paul Vernon
Paul Vernon

Reputation: 3901

In your query tool, set the statement terminator to something that is not ';'. E.g. use @

BEGIN
 FOR V AS MYCURSOR CURSOR FOR SELECT ID,NAME,AGE FROM PEOPLE
 DO
    BEGIN
        INSERT INTO PERSON(NAME,AGE) VALUES(V.NAME,V.AGE);
    END;
 END FOR;
END
@

Upvotes: 0

Related Questions