SET DESCRIPTOR

SET DESCRIPTOR ステートメントは、SQL 記述子に情報を設定します。

呼び出し

このステートメントは、アプリケーション・プログラム、SQL 関数、 SQL プロシージャー、またはトリガー内にのみ組み込むことができます。 これを対話式に発行することはできません。これは実行可能ステートメントですが、動的に準備することはできません。REXX で指定してはなりません。

権限

権限は不要です。

構文

構文図を読む構文図をスキップする
        .-SQL-.              .-LOCAL--.                        
>>-SET--+-----+--DESCRIPTOR--+--------+--SQL-descriptor-name---->
                             '-GLOBAL-'                        

     .-,---------------.                                
     V                 |                                
>--+---set-header-info-+----------------------------+----------><
   |                              .-,-------------. |   
   |                              V               | |   
   '-VALUE--+-integer----------+----set-item-info-+-'   
            '-integer-variable-'                        

構文図を読む構文図をスキップする
set-header-info

|--COUNT-- = --+-constant-1-+-----------------------------------|
               '-variable-1-'   

set-item-info

|--+-CARDINALITY---------------+-- = --+-constant-2-+-----------|
   +-DATA----------------------+       '-variable-2-'   
   +-DATETIME_INTERVAL_CODE----+                        
   +-DB2_CCSID-----------------+                        
   +-INDICATOR-----------------+                        
   +-LENGTH--------------------+                        
   +-LEVEL---------------------+                        
   +-PRECISION-----------------+                        
   +-SCALE---------------------+                        
   +-TYPE----------------------+                        
   +-USER_DEFINED_TYPE_CATALOG +                        
   +-USER_DEFINED_TYPE_NAME  --+                        
   '-USER_DEFINED_TYPE_SCHEMA -'                        

説明

LOCAL
記述子の名前の有効範囲はプログラム呼び出しのローカルであることを指定します。 提供される情報は、このローカルの有効範囲で認識される記述子に設定されます。
GLOBAL
記述子の名前の有効範囲は SQL セッション全体であることを指定します。 提供される情報は、同じデータベース接続を使用して実行するプログラムによって認識される記述子に設定されます。
SQL-descriptor-name
SQL 記述子の名前を指定します。名前は、指定の有効範囲を持つ既存の記述子を識別するものでなければなりません。
set-header-info
SQL 記述子に属性を設定します。 同じ記述子項目を、1 つの SET DESCRIPTOR ステートメントで複数回指定することはできません。
VALUE
指定された情報が設定される項目数を指定します。 記述子に割り振られる項目の最大数よりも項目数が大きいか、または項目数が 1 より小さい場合、エラーが戻されます。
integer
1 から SQL 記述子の割り振り済み項目数の範囲の整数定数。
整変数
変数を宣言する規則に従ってプログラム内で宣言された、変数を指定します。 変数をグローバル変数にすることはできません。変数のデータ・タイプは、SMALLINT、INTEGER、BIGINT、または DECIMAL、あるいは位取りがゼロの NUMERIC でなければなりません。 変数の値は、1 から SQL 記述子の割り振り済み項目の最大数の範囲でなければなりません。
set-item-info
特定の項目に関する情報を SQL 記述子に設定します。 同じ記述子項目を、1 つの SET DESCRIPTOR ステートメントで複数回指定することはできません。 指定されたタイプに適用できない項目は無視されます。

set-header-info

COUNT
記述子に指定される項目の数。
variable-1
変数を宣言する規則に従ってプログラム内で宣言された、変数を指定します。ただし、これはファイル参照変数またはグローバル変数であってはなりません。変数のデータ・タイプは、表 1で指定されている COUNT ヘッダー項目と互換性がなければなりません。 変数は、(記憶域割り当て規則を使用して) COUNT ヘッダー項目に割り当てられます。 割り当て規則の詳細については、割り当ておよび比較を参照してください。
constant-1
COUNT ヘッダー項目の設定に使用される定数値を識別します。 定数のデータ・タイプは、表 1で指定されている COUNT ヘッダー項目と互換性がなければなりません。 定数は、(記憶域割り当て規則を使用して) COUNT ヘッダー項目に割り当てられます。 割り当て規則の詳細については、割り当ておよび比較を参照してください。

set-item-info

CARDINALITY
項目のカーディナリティーを指定します。許可されるのは、TYPE が配列の場合のみです。
DATA
項目記述子によって記述されるデータの値を指定します。 INDICATOR の値が負の場合、DATA の値は未定義となります。 割り当てられる値は定数になれません。
DATETIME_INTERVAL_CODE
特定の日時データ・タイプを指定します。 TYPE が 9 に設定される場合、DATETIME_INTERVAL_CODE の指定は必須です。
1
DATE
2
TIME
3
TIMESTAMP
DB2_CCSID
文字、グラフィック、XML、および日時データの CCSID を指定します。これ以外のデータ・タイプの値はすべて適用できません。 DB2_CCSID が指定されないか、0 が指定される場合があります。
  • XML データの場合、SQL_XML_DATA_CCSID QAQQINI オプション設定が使用されます。
  • それ以外の場合は、変数の CCSID はジョブの CCSID によって決定されます。
INDICATOR
標識の値を指定します。 負でない値は、この記述子項目に DATA 値が指定されることを示します。 拡張標識変数が使用可能になっていない場合、 負の値は、この記述子項目によって記述される値が NULL 値であることを 示します。設定されない場合、INDICATOR の値は 0 です。拡張標識変数が使用可能な場合は、次のとおりです。
  • -1、-2、-3、-4、または -6 は、この記述子項目によって記述される値が NULL 値であることを示します。
  • -5 は、この記述子項目によって記述される値が DEFAULT 値であることを示します。
  • -7 は、この記述子項目によって記述される値が UNASSIGNED 値であることを示します。
  • 0 または正の値は、この記述子項目に DATA 値が提供されることを示します。
LENGTH
データの最大長を指定します。 データ・タイプが文字またはグラフィック・ストリング・タイプ、XML タイプまたは日時タイプの場合、長さは文字数を表します (バイト数ではない)。データ・タイプがバイナリー・ストリングまたは他のタイプの場合、長さはバイト数を表します。 LENGTH が指定されない場合、デフォルトの長さが使用されます。 デフォルトの説明については、表 1を参照してください。
LEVEL
項目記述子のレベル。
0
1 次記述子項目です。
1
2 次記述子項目用です。これは、配列項目用です。
PRECISION
データ・タイプ DECIMAL、NUMERIC、 DECFLOAT、DOUBLE、REAL、FLOAT、および TIMESTAMP の記述子項目についての精度を指定します。 PRECISION が指定されない場合、デフォルトの精度が使用されます。 デフォルトの説明については、表 1を参照してください。
SCALE
データ・タイプ DECIMAL または NUMERIC の記述子項目についての位取りを指定します。 SCALE が指定されない場合、デフォルトの位取りが使用されます。 デフォルトの説明については、表 1を参照してください。
TYPE
記述子項目のデータ・タイプを表すデータ・タイプ・コードを指定します。 データ・タイプ・コードおよび長さの説明については、表 2を参照してください。 それぞれの記述子項目ごとに、TYPE または USER_DEFINED_TYPE_NAME および USER_DEFINED_TYPE_SCHEMA のいずれか (両方ではない) を指定しなければなりません。
USER_DEFINED_TYPE_CATALOG
ユーザー定義タイプのサーバー名を指定します。 USER_DEFINED_TYPE_CATALOG が指定される場合、これは現行サーバーと等しくなければなりません。 指定されない場合、USER_DEFINED_TYPE_CATALOG が現行サーバーとなります。
USER_DEFINED_TYPE_NAME
ユーザー定義データ・タイプの名前を指定します。 それぞれの記述子項目ごとに、TYPE または USER_DEFINED_TYPE_NAME および USER_DEFINED_TYPE_SCHEMA のいずれか (両方ではない) を指定しなければなりません。
USER_DEFINED_TYPE_SCHEMA
ユーザー定義タイプが入っているスキーマを指定します。 それぞれの記述子項目ごとに、TYPE または USER_DEFINED_TYPE_NAME および USER_DEFINED_TYPE_SCHEMA のいずれか (両方ではない) を指定しなければなりません。
variable-2
変数を宣言する規則に従ってプログラム内で宣言された、変数を指定します。ただし、これはファイル参照変数またはグローバル変数であってはなりません。変数のデータ・タイプは、表 1で指定されている記述子情報項目と互換性がなければなりません。 変数は、(記憶域割り当て規則を使用して) 対応する記述子項目に割り当てられます。 割り当て規則の詳細については、割り当ておよび比較を参照してください。

一般的に、DATA 項目を設定するときは変数のデータ・タイプ、長さ、精度、位取り、および CCSID が表 1 で指定されているものと同じでなければなりません。 可変長タイプの場合、可変長は記述子の LENGTH よりも小さくてはなりません。 C NUL 終了タイプの場合、可変長は記述子の LENGTH よりも少なくとも 1 大きくなければなりません。

constant-2
記述子項目の設定に使用される定数値を識別します。 定数のデータ・タイプには、表 1 で指定されているのと同じデータ・タイプ、長さ、精度、位取り、および CCSID がなければなりません。 定数は、(記憶域割り当て規則を使用して) 対応する記述子項目に割り当てられます。 割り当て規則の詳細については、割り当ておよび比較を参照してください。

記述子項目が DATA に設定される場合、定数-2 は指定できません。

記述子項目のデフォルト値: 以下の表は、記述子項目のデフォルト値が指定されない場合の LENGTH、PRECISION、および SCALE のデフォルト値を表しています。

表 1. デフォルトの LENGTH、PRECISION、および SCALE
データ・タイプ LENGTH PRECISION SCALE
DECIMAL および NUMERIC   5 0
FLOAT   53 0
DECFLOAT   34  
CHARACTER、VARCHAR、および CLOB 1    
GRAPHIC、VARGRAPHIC、および DBCLOB 1    
BINARY、VARBINARY、および BLOB 1    
DATE 10    
TIME 8    
TIMESTAMP 26 6  
XML 1    

例 1: 記述子 'NEWDA' の項目数を :numitems の値に設定します。

  EXEC SQL SET DESCRIPTOR  'NEWDA'
    COUNT = :numitems;

例 2: 記述子 'NEWDA' の最初の項目記述子のタイプおよび長さの値を設定します。

  SET DESCRIPTOR 'NEWDA'
    VALUE 1 TYPE   = :dtype,
            LENGTH = :olength;