任意のSQL文を実行するより強力な方法は、一度プリペアをし、その後でプリペアード・ステートメントを実行したいところで実行することです。 また、SQL文を汎用化した形でプリペアし、パラメータを置き換えることで特定のSQL文を実行させることも可能です。 SQL文をプリペアする時、後でパラメータとして置き換えたいところには疑問符を記述してください。 以下に例を示します。
EXEC SQL BEGIN DECLARE SECTION END-EXEC. 01 STMT PIC X(40) VARYING. EXEC SQL END DECLARE SECTION END-EXEC. MOVE "INSERT INTO test1 VALUES(?, ?);" TO ARR OF STMT. COMPUTE LEN OF STMT = FUNCTION STORED-CHAR-LENGTH (ARR OF STMT). EXEC SQL PREPARE MYSTMT FROM :STMT END-EXEC. ... EXEC SQL EXECUTE MYSTMT USING 42, 'foobar' END-EXEC.
プリペアード・ステートメントが必要なくなった時、割当てを解除しなければなりません。
EXEC SQL DEALLOCATE PREPARE name END-EXEC.