REXX SQLDA

次の EXECSQL 文は、REXX SQLDA を必要とします。

CALL … USING DESCRIPTOR descriptor-name

DESCRIBE statement-name INTO descriptor-name

DESCRIBE INPUT statement-name INTO descriptor-name

EXECUTE … USING DESCRIPTOR descriptor-name

FETCH … USING DESCRIPTOR descriptor-name

OPEN … USING DESCRIPTOR descriptor-name

PREPARE … INTO descriptor-name

REXX プロシージャでは複数の SQLDA を使用できます。SQLDA 名は、共通の語幹を持つ REXX 変数のセットで構成されています。この語幹は、ピリオドを含まない REXX 変数名でなければならず、EXECSQL 文で使用される descriptor-name の値と同じです。次の例では、語幹名は INSQLDA です。

ADDRESS DSNREXX
   "EXECSQL DESCRIBE INPUT S2 INTO :INSQLDA "
   IF SQLCODE \= "0" THEN DO
      SAY "DESCRIBE INPUT FAILED "
      CALL DBERROR
   END

   INSQLDA.1.SQLDATA = HV1
   INSQLDA.1.SQLIND  = 0           /* Input variable is not null    */
   INSQLDA.2.SQLDATA = HV2
   INSQLDA.2.SQLIND  = 0           /* Input variable is not null    */
   INSQLDA.3.SQLDATA = HV3
   INSQLDA.3.SQLIND  = 0           /* Input variable is not null    */
   INSQLDA.4.SQLDATA = HV4
   INSQLDA.4.SQLIND  = 0           /* Input variable is not null    */

DB2 LUW で使用する場合、SQLDA は次のフィールドで構成されます。

変数名 使用方法
stem.SQLD 記述されている列の数。

各 SQLDA には、次の REXX 変数の stem.SQLD が含まれています。この変数のセットは、他の言語の SQLDA の SQLVAR 構造体と同等ですが、REXX に固有の変数がいくつか含まれています。SQLDA の SQLVAR 構造体の出現回数は、1<=n<=stem.SQLD に相当します。

stem.n.SQLTYPE 列のデータ型。
stem.n.SQLLEN DECIMAL および NUMERIC 以外の列の長さ。
stem.n.SQLLEN.SQLPRECISION DECIMAL または NUMERIC の列の精度。
stem.n.SQLLEN.SQLSCALE DECIMAL または NUMERIC の列の位取り。
stem.n.SQLCCSID 文字列の列の CCSID。 未サポート
stem.n.SQLUSECCSID SQLDATA の新しい CCSID。 未サポート
stem.n.SQLLOCATOR プロシージャの結果セット ロケーター。 未サポート
stem.n.SQLDATA 入力ホスト変数または出力ホスト変数の値 (使用されている文によって決まる)。
stem.n.SQLIND Null インジケーター。SQLDATA が NULL でない場合は 0、列が NULL の場合または NULL に設定される場合は -1。
stem.n.SQLNAME 列の名前。