RPGにてシンプルなSQL文を書く機会があったので、簡単なサンプルを書いてみました。
SQLRPGLEサンプル
D MAIN PR EXTPGM('SAMPLE28')
D 7P 0
D*
D MAIN PI
D P@QCNT 7P 0
D*
D C@QCNT S 7P 0
D*
D*******************************************************
D* MAIN
D*******************************************************
/FREE
//** SQL OPTIONS **
EXEC SQL
SET OPTION COMMIT = *NONE;
EXEC SQL
DECLARE CSR CURSOR FOR
SELECT COUNT(1)
FROM EMPLOYEES;
EXEC SQL
OPEN CSR;
IF SQLCODE = *ZERO;
EXEC SQL
FETCH CSR INTO :C@QCNT;
DSPLY C@QCNT;
P@QCNT = C@QCNT;
EXEC SQL
CLOSE CSR;
ELSE;
DSPLY 'SQL ERROR !';
DSPLY SQLCODE;
P@QCNT = *ALL'9';
ENDIF;
*INLR = *ON;
RETURN;
/END-FREE
実行結果(成功時)
> CALL PGM(TIGEROBJ/SAMPLE28) PARM(X'0000000F') DSPLY 2
SQLCODE = 0は「操作は正常に実行されました。警告または例外状態は発生していません」とのことで、SQLの結果を画面に表示できました。
実行結果(失敗時。SQL文で存在しないテーブル名を指定)
> CALL PGM(TIGEROBJ/SAMPLE28) PARM(X'0000000F') *LIBL のタイプ *FILE の EMPLOYEEX が見つからない。 DSPLY SQL ERROR ! DSPLY 204-
SQLCODE = -204は「未定義のオブジェクトまたは制約名が見つかりました」というエラーになります。