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

第7章 応用プログラムの実行時に動的SQL文を実行する方法> 7.3 SQL文の条件を動的に変更して実行する

7.3.3 動的単一行SELECT文を準備して実行する

1行のデータの取り出しを行う場合には、動的単一行SELECT文を準備して実行します。動的単一行SELECT文を実行するには、USING句を指定したEXECUTEを使用します。動的パラメタ指定のある動的単一行SELECT文の指定例を以下に示します。なお、SQL記述子域を操作する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) 富士通株式会社 2006