埋め込みSQLのホスト変数(出力)はSQLCODE=0 (埋め込みSQL正常終了)の場合のみ正しい値が設定されていることが保証されます。
SQLCODEが0以外の場合(該当データがない100やエラー等)で値が設定される場合もありますが、その値は無効です。
埋め込みSQLを使用する場合は、必ずSQLCODEを確認してエラーチェックを行うようにして下さい。
例)
悪い例:
&sql( select name into :name from sample.person where id = 1001 )
If $Get(name)'="" { // <-- SQLCODE=0以外でnameの値は保証されない
Write !,"Name = ", name
} Else {
Write !,"No such person"
}
上記の変更例:
&sql( select name into :name from sample.person where id = 1001 )
If SQLCODE=0 {
Write !,"Name = ", name
} ElseIf SQLCODE=100 {
Write !,"No such person"
} Else {
Write !,"SQL ERROR: ",SQLCODE
}
以下ドキュメントをご参照ください。
埋め込みSQLのホスト変数について【IRIS】
埋め込みSQLのホスト変数について
ホスト変数の値には以下のような制限事項があります。
- 入力ホスト変数は埋め込み SQL の後では有効になりません。
- 出力ホスト変数はSQLCODE = 0 のときに埋め込み SQL の後でのみ有効性が保証されます。