埋め込みSQL &SQL( select xxx into :var from ... ) としたとき、ホスト変数varに意図しない値が格納される場合があります。

埋め込み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のホスト変数について


ホスト変数の値には以下のような制限事項があります。


関連トピック:
添付ファイル:

アンケートにご協力をお願いします
このトピックは参考になりましたか?
このトピックに関するお問い合わせ

FAQトップに戻る