スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
UAP実行時に,プログラム中でSQLの文字列を組み立て,そのSQL文字列をPREPARE文で前処理してEXECUTE文,OPEN文,FETCH文,又はCLOSE文で実行したり,EXECUTE IMMEDIATE文で前処理して実行したりする機能があります。この機能で実行するSQLに対しても,UAPから値を渡すことができます。この場合に,PREPARE文で前処理するSQL,又はEXECUTE IMMEDIATE文で前処理して実行するSQLの文字列の中で,UAPから値を渡される箇所に「?」を指定します。この「?」を?パラメタといいます。
?パラメタに渡す値は,PREPARE文に対応するEXECUTE文,OPEN文,FETCH文,CLOSE文,又はEXECUTE IMMEDIATE文のUSING句の埋込み変数で指定します。標識変数はEXECUTE文及びEXECUTE IMMEDIATE文でだけ指定できます。
SQL記述領域を使用しない?パラメタの例を次に示します。
(例)?パラメタの使用例(SQL記述領域を使用しない場合)
: EXEC SQL BEGIN DECLARE SECTION; struct{ long xcmnd_len; char xcmnd_txt[58]; }xcmnd; char XSCODE[5]; char XSNAME[17]; char XCOL[3]; long XTANKA; long XZSURYO; EXEC SQL END DECLARE SECTION; : strcpy(xcmnd.xcmnd_txt,"INSERT INTO ZAIKO VALUES(?,?,?,?,?)"); xcmnd.xcmnd_len = strlen(xcmnd.xcmnd_txt); EXEC SQL PREPARE ST1 FROM :xcmnd; strcpy(XSCODE,"595M"); strcpy(XSNAME,"ソックス"); strcpy(XCOL,"赤"); XTANKA = 300; XZSURYO = 200; EXEC SQL EXECUTE ST1 USING :XSCODE,:XSNAME,:XCOL,:XTANKA,:XZSURYO; :
: DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL BEGIN DECLARE SECTION END-EXEC. 01 XCMND. 02 XCMND-LEN PIC S9(9) COMP VALUE 58. 02 XCMND-TXT PIC X(58) VALUE SPACE. 77 XSCODE PIC X(4). 77 XSNAME PIC N(8). 77 XCOL PIC N(1). 77 XTANKA PIC S9(9) COMP. 77 XZSURYO PIC S9(9) COMP. EXEC SQL END DECLARE SECTION END-EXEC. : PROCEDURE DIVISION. : MOVE 'INSERT INTO ZAIKO VALUES(?,?,?,?,?)' TO XCMND-TXT. EXEC SQL PREPARE ST1 FROM :XCMND END-EXEC. MOVE '123S' TO XSCODE. MOVE N'Tシャツ' TO XSNAME. MOVE N'赤' TO XCOL. MOVE 200 TO XTANKA. MOVE 300 TO XZSURYO. EXEC SQL EXECUTE ST1 USING :XSCODE,:XSNAME,:XCOL,:XTANKA,:XZSURYO END-EXEC. :
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.