Hitachi

ノンストップデータベース HiRDB Version 9 SQLリファレンス


4.17.1 DESCRIBE TYPE文の形式と規則

〈この項の構成〉

(1) 機能

PREPARE文で前処理したSQLの検索項目情報にユーザ定義型が直接又は間接的に含まれる場合,そのユーザ定義型の定義情報(各属性のデータコード,データ長など)をSQL記述領域に受け取ります。

PREPARE文でWITH ALL TYPE OPTIONを指定しないで前処理した場合,ユーザ定義型の定義情報は受け取れません。また,受け取ろうとするユーザ定義型の属性の隠蔽レベルがすべてPUBLIC以外の場合,SQL記述領域のSQLD領域に0が設定されます。

注※

直接ユーザ定義型が含まれる場合とは,検索項目情報の列がユーザ定義型のことをいい,間接的にユーザ定義型が含まれる場合とは,検索項目情報の列がユーザ定義型で,更にその列にユーザ定義型の属性がある状態(つまりユーザ定義型がネストしている状態)をいいます。

(2) 使用権限

なし。

(3) 形式

 DESCRIBE TYPE :埋込み変数1 :埋込み変数2 FOR {SQL文識別子|拡張文名} INTO
         〔:〕SQL記述領域名 〔〔:〕列名記述領域名〕
         〔TYPE 〔:〕型名記述領域名〕

(4) オペランド

(a) TYPE :埋込み変数1 :埋込み変数2 FOR {SQL文識別子|拡張文名}

埋込み変数1

ユーザ定義型の所有者を格納したVARCHAR(30)の埋込み変数を指定します。

埋込み変数2

ユーザ定義型のデータ型識別子を格納したVARCHAR(30)の埋込み変数を指定します。

SQL文識別子

PREPARE文で指定したSQL文識別子を指定します。

拡張文名

PREPARE文で前処理したSQL文を識別する拡張文名を指定します。

拡張文名については,「拡張文名」を参照してください。

(b) 〔:〕SQL記述領域名 〔〔:〕列名記述領域名〕 〔TYPE 〔:〕型名記述領域名〕

SQL記述領域名

ユーザ定義型の属性の情報を受け取るSQL記述領域の名称を指定します。SQL記述領域については,マニュアル「HiRDB Version 9 UAP開発ガイド」を参照してください。

列名記述領域名

ユーザ定義型の属性名を受け取る列名記述領域を指定します。列名記述領域については,マニュアル「HiRDB Version 9 UAP開発ガイド」を参照してください。

型名記述領域名

ユーザ定義型の属性がユーザ定義型の場合,そのユーザ定義型のユーザ定義型名を受け取る型名記述領域を指定します。型名記述領域については,マニュアル「HiRDB Version 9 UAP開発ガイド」を参照してください。

(5) 共通規則

  1. UAP中では,DESCRIBE TYPE文を実行する前に,SQL記述領域にSQLVARの数(SQLN領域)を設定しておく必要があります。

  2. ユーザ定義型の属性のデータ型がSQL記述領域に,属性の名称が列名記述領域に,属性のデータ型がユーザ定義型の場合のユーザ定義型名が型名記述領域にそれぞれ設定されます。

  3. 指定した抽象データ型が上位のデータ型の属性を継承している場合,継承している属性の情報も設定されます。この場合,設定される順序は,継承している属性,固有の属性の順です。

  4. PREPARE文で指定したSQLの検索項目に直接又は間接的に含まれるユーザ定義型以外のユーザ定義型は指定できません。

  5. 隠蔽レベルがPUBLIC以外の属性は定義情報を取得できません。

  6. 列名記述領域名を指定する場合は,対応するPREPARE文でWITH SQLNAME OPTIONを指定してください。

(6) 留意事項

  1. SQL文識別子は,埋込み変数と同様にコンパイル単位のファイル内で有効な名前であり,同じSQL文識別子に対する複数のSQLを,複数のモジュールにわたって使用できません。

  2. ユーザ定義型の所有者名の長さが9文字以上の場合,型名記述領域を使用できません。

(7) 使用例

PREPARE文で前処理したSELECT文(SQL文識別子:PRESQL)で取得したユーザ定義型名(埋込み変数1:WUSERID,埋込み変数2:WTYPENAME)の属性情報,属性名,及び属性のユーザ定義型名を,SQL記述領域,列名記述領域,及び型名記述領域に指定します。

DESCRIBE TYPE :WUSERID :WTYPENAME
    FOR PRESQL INTO :SQLDA :SQLCNDA :SQLTNDA