Symfoware Server SQLビギナーズガイド - FUJITSU -
目次 索引 前ページ次ページ

第7章 アプリケーションの実行時に動的SQL文を実行する方法> 7.3 SQL文の条件を動的に変更して実行する> 7.3.2 SQL記述子域の操作方法

7.3.2.2 動的単一行SELECT文を準備して実行する(SQL記述子域の場合)

1行のデータの取り出しを行う場合には、動的単一行SELECT文を準備して実行します。動的単一行SELECT文を実行するには、USING句を指定したEXECUTEを使用します。SQL記述子域を使用して、動的パラメタ指定のある動的単一行SELECT文の指定例を以下に示します。なお、SQL記述子域を操作するSQL文の詳細については、“図:被準備文の動的パラメタ指定値の設定手順”の例を参照してください。

端末から入力した動的単一行SELECT文の例です。端末から入力した動的パラメタ指定の値を探索条件としてデータを検索します。
                      :
     [端末から入力した動的単一行SELECT文をstrに格納]
                      :
EXEC SQL PREPARE STMID FROM :str;
EXEC SQL ALLOCATE DESCRIPTOR 'INDESC' WITH MAX 100;
EXEC SQL ALLOCATE DESCRIPTOR 'OUTDESC' WITH MAX 100;
EXEC SQL DESCRIBE INPUT STMID USING SQL DESCRIPTOR 'INDESC';
EXEC SQL DESCRIBE OUTPUT STMID USING SQL DESCRIPTOR 'OUTDESC';
EXEC SQL GET DESCRIPTOR 'INDESC' :icount = COUNT;
for( i = 1; i <= icount; i++ ) {
    EXEC SQL GET DESCRIPTOR 'INDESC' VALUE :i …
                      :
     [動的パラメタ指定の情報をSQL記述子域から取得]
                      :
    EXEC SQL SET DESCRIPTOR 'INDESC' VALUE :i …
                      :
     [端末から入力した動的パラメタ指定の値をSQL記述子域に設定]
                      :
}
EXEC SQL GET DESCRIPTOR 'OUTDESC' :ocount = COUNT;
for( i = 1; i <= ocount; i++ ) {
    EXEC SQL GET DESCRIPTOR 'OUTDESC' VALUE :i …
                      :
     [選択リストの情報をSQL記述子域から取得]
                      :
    EXEC SQL SET DESCRIPTOR 'OUTDESC' VALUE :i …
                      :
     [SQL記述子域の選択リストの情報を変更]
                      :
}
EXEC SQL EXECUTE STMID INTO SQL DESCRIPTOR 'OUTDESC' 
                       USING SQL DESCRIPTOR 'INDESC';
EXEC SQL GET DESCRIPTOR 'OUTDESC' VALUE :i …
                      :
     [実行結果の値の取得]
                      :
EXEC SQL DEALLOCATE DESCRIPTOR 'INDESC';
EXEC SQL DEALLOCATE DESCRIPTOR 'OUTDESC';
EXEC SQL DEALLOCATE PREPARE STMID;
                      :

目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2007