最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

7.23.組み込みSQLの例2

[ Previous ] [ HOME ] [ Upper ] [ Next ]


組み込みSQLの例2

ソースタイプは SQLRPGLE です。

FQPRINT    O    F  132        PRINTER                                   
                                                                        
D SQL             S            400                                      
D FILE            S             10    INZ('QRPGSRC   ')                 
D ZERO            S              6  0 INZ(000000)                       
D DS1           E DS                  EXTNAME(QRPGSRC)                  
                                                                        
C                   EXCEPT    HED                                       
 *                                                                      
 * SQL 文の作成                                                         
 *                                                                      
C                   EVAL      SQL = 'SELECT * FROM ' + FILE + ' +        
C                             WHERE SRCDAT = ?'                          
 *                                                                      
 * SQL エラーモニター                                                   
 *                                                                      
C/EXEC SQL                                                              
C+         WHENEVER SQLERROR GOTO ERROR                                 
C/END-EXEC                                                              
 *                                                                      
 *  SQL動的準備                                                         
 *                                                               
C/EXEC SQL                                                       
C+         PREPARE P1 FROM :SQL                                  
C/END-EXEC                                                       
 *                                                               
 *  カーソルの定義                                               
 *                                                               
C/EXEC SQL                                                       
C+         DECLARE C1 CURSOR FOR P1                              
C/END-EXEC                                                       
 *                                                               
 *  カーソルのオープン                                           
 *                                                               
C/EXEC SQL                                                       
C+         OPEN C1 USING :ZERO                                   
C/END-EXEC                                                       
 *                                                               
 *  データの処理                                                 
 *                                                               
C                   DOW       SQLCOD = 0                         
 *                                                                   
 *  カーソルで行を取り出す                                           
 *                                                                   
C/EXEC SQL                                                           
C+         FETCH C1   INTO :DS1                                      
C/END-EXEC                                                           
                                                                     
C                   IF        (SQLCOD >= 0) AND (SQLCOD <> 100)      
C                   EXCEPT    DTL                                    
C                   ENDIF                                            

C                   ENDDO                                            
 *                                                                   
 *  カーソルのクローズ                                               
 *                                                                   
C/EXEC SQL                                                           
C+         CLOSE C1                                                  
C/END-EXEC                                                           
                                                                     
C                   GOTO      FINISH                           
                                                                
C     ERROR         TAG                                        
C     SQLCOD        DSPLY                                      
                                                                
C     FINISH        TAG                                        
C                   MOVE      *ON           *INLR              
C                   RETURN                                     
OQPRINT    E            HED             001                          
O          E            DTL       001                                
O                       SRCSEQ           +   1                       
O                       SRCDAT           +   1                       
O                       SRCDTA           +   1                       

 

ポイント

SQLという変数に、SQL文を作っていますが、上記の「FILE」を文の中に入れこんでしまう方法と、パラメータマーカ(クエスチョンマーク)をつけておき、OPEN文の中でUSING句をつかうことで、パラメータを渡せます。

WHENEVERは、CLPで言うところのプログラムレベルモニターメッセージです。しかし、GOTOか、継続(エラーの無視)しか指定は出来ません。

 


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送