データウェアハウスセンター アプリケーション統合の手引き

SQL によるメタデータへのアクセス

SQL を使用して、情報カタログを構成するデータベース表から直接にメタデータを抽出することができます。この節では、例を示します。

  1. 情報カタログに存在するオブジェクト・タイプ定義を判別するには、次の SQL ステートメントを入力します。
    SELECT OBJTYPID, DPNAME, NAME, CREATOR, PTNAME FROM FLG.OBJTYREG
    

    このステートメントでは、以下の情報が戻されます。

    OBJTYPID
    オブジェクト・タイプの内部 ID

    DPNAME
    オブジェクト・タイプ名

    NAME
    オブジェクト・タイプの外部名

    CREATOR、PTNAME
    そのタイプのオブジェクトが保管されている表 (オブジェクト表)
  2. (1 のステップから) オブジェクト・タイプを判別した後、特定のオブジェクト・タイプについてのプロパティー名を判別するには、次の SQL ステートメントを入力します。
    SELECT  PHYPRPNM, PROPNAME, DATATYPE, LENGTH, OPTIONS, UUISEQNO,
      PROPSEQ FROM FLG.PROPERTY WHERE OBJTYPID = 'object_type_ID' 
      ORDER BY PROPSEQ
    

    このステートメントでは、以下の情報が戻されます (プロパティーが作成された順に)。

    PHYPRPNM
    オブジェクト・タイプのプロパティーにマップする、オブジェクト表内の物理列名

    PROPNAME
    プロパティーのビジネス名

    DATATYPE
    プロパティーのデータ・タイプ

    LENGTH
    プロパティーの長さ

    OPTIONS
    オブジェクト内のこのプロパティーについて値が必須であるかどうか

    UUISEQNO
    UUI 標識 (0 でない場合、シーケンス番号)

    PROPSEQ
    プロパティーがプロパティー表に追加された順序
  3. (1 のステップから) オブジェクトが保管されている物理表を判別し、(2 のステップから) 必要なプロパティーを判別した後、特定のオブジェクト・タイプのインスタンスを検索するには、次の SQL ステートメントを入力します。
    SELECT OBJTYPID, INSTIDNT, NAME,phyprpnm1,phyprpnm2...
      FROM creator.ptname
      WHERE phyprpnm LIKE '%search_criteria%'
    

    このステートメントでは、以下の情報が戻されます。

    OBJTYPID
    オブジェクト・タイプの内部 ID

    INSTIDNT
    このオブジェクト・タイプのインスタンスの内部 ID

    phyprpnm1
    SELECT ステートメントで指定されたプロパティーの値

    phyprpnm2
    SELECT ステートメントで指定されたプロパティーの値

    さらに、LONG VARCHAR データ・タイプのプロパティー値を検索するには、次の SELECT ステートメントを入力しなければなりません。

    SELECT PHYPRPNM, ODESC FROM FLG.OVERDESC
      WHERE OBJTYPID = object_type_ID
      AND INSTIDNT = object_instance_ID
      ORDER BY SEQNO
    

    ここで、object_type_ID および object_instance_ID は、 3 のステップで SELECT ステートメントを生成した後に入手した値です。このステートメントでは、以下の情報が戻されます。

    PHYPRPNM
    LONG VARCHAR のプロパティーの物理名

    ODESC
    LONG VARCHAR の値 (それぞれのプロパティー値には、複数の ODESC が存在する可能性があり、順序はシーケンス番号に従います)
  4. 情報カタログ内のすべてのオブジェクトのリストを検索するには、次の SQL ステートメントを入力します。
    SELECT FLGID, INSTNAME, TYPENAME FROM FLG.NAMEINST
    

    このステートメントでは、以下の情報が戻されます。

    FLGID
    オブジェクトを表す、連結されたオブジェクト・タイプとインスタンス ID

    INSTNAME
    オブジェクトの外部名

    TYPENAME
    オブジェクトのタイプ (オブジェクト・タイプの外部名)
  5. オブジェクト間の階層または接点関係を判別するには、次のステートメントを入力します。
    SELECT SOURCE, TARGET, RELTYPE FROM FLG.RELINST
    

    このステートメントでは、以下の情報が戻されます。

    SOURCE
    関係のソースであるオブジェクトを表す、連結されたオブジェクト・タイプとインスタンス ID

    TARGET
    関係のターゲットであるオブジェクトを表す、連結されたオブジェクト・タイプとインスタンス ID

    RELTYPE
    関係タイプ (コンテナーを表す C または接点を表す T)

    オブジェクト間のリンクまたは付加関係を判別するには、次のステートメントを入力します。

    SELECT SOURCE, TARGET, RELTYPE FROM FLG.ATCHREL
    

    このステートメントでは、以下の情報が戻されます。

    SOURCE
    関係のソースであるオブジェクトを表す、連結されたオブジェクト・タイプとインスタンス ID

    TARGET
    関係のターゲットであるオブジェクトを表す、連結されたオブジェクト・タイプとインスタンス ID

    RELTYPE
    関係タイプ (付加を表す A またはリンクを表す L)

    SOURCE および TARGET 値を使用すると、オブジェクト表内のインスタンス情報を検索することができます。また、4 のステップで示されているように、 SQL ステートメントに条件を付けて、特定のオブジェクト値を選択することもできます。

例: あるアプリケーションについて、 Employee という名前のリレーショナル表に関するメタデータを表示し、さらに、その表のすべての列を表示したいとします。 Employee のオブジェクト・タイプは TABLES であり、列のオブジェクト・タイプは COLUMN です。アプリケーションには、以下の SQL ステートメントが組み込まれます。

  1. TABLES オブジェクトが保管されている表の名前を検索します。
    SELECT OBJTYPID, DPNAME, NAME, CREATOR, PTNAME FROM FLG.OBJTYREG 
    WHERE DPNAME = 'TABLES'
    

    このステートメントでは、以下の情報が戻されます。

    '000001', 'TABLES', 'Relational Tables', 'USERXYZ', 'TABLES'
    
  2. COLUMN オブジェクトの OBJTYPID を検索します。
    SELECT OBJTYPID, DPNAME, CREATOR, PTNAME from FLG.OBJTYREG 
    WHERE DPNAME = 'COLUMN'
    

    このステートメントでは、以下の情報が戻されます。

    '000007', 'COLUMN', 'Columns or fields', 'USERXYZ', 'COLUMN'
    
  3. メタデータを表示したい特定の TABLES オブジェクトに関する情報を検索します。
    SELECT OBJTYPID, INSTIDNT, NAME, DBNAME, OWNER, TABLES
      FROM USERXYZ.TABLES
      WHERE NAME = 'Employee'
    

    このステートメントでは、以下の情報が戻されます。

    '000001', '0040608795',  'Employee', 'MYDBASE', 'USERABC', 'EMPL_TAB'
    
  4. TABLES インスタンス (SOURCE) と COLUMN インスタンス (TARGET) の間の関係を検索します。
    SELECT TARGET FROM FLG.RELINST
    WHERE SOURCE = '0000010040608795'
      AND TARGET LIKE '000007%'
      AND RELTYPE = 'C'
    

    このステートメントでは、次の 2 つのオブジェクトが戻されます。

    ('0000079238400354')
    ('0000079843095410')
    
  5. 戻された 2 つの COLUMN オブジェクトに関する情報を検索します。
    SELECT NAME, SHRTDESC, DATATYPE, LENGTH FROM USERXYZ.COLUMNS
    WHERE INSTIDNT IN ('9238400354', 9843095410')
    

    このステートメントでは、以下の情報が戻されます。

    ('Name', 'Employee name information', 'CHAR', '80')
    ('Address', 'Employee address information', 'CHAR', '220')
    


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]