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は「未定義のオブジェクトまたは制約名が見つかりました」というエラーになります。