2016-12-12 24 views
0

列のインデックスに基づいて列の値を取得することは可能ですか?以下のようなSQL 何か:DB2の列名の代わりに列のインデックス番号で選択してください

SELECT 
    (SELECT colname 
    FROM syscat.columns 
    WHERE tabname = 'myTable' AND colno=100) AS TEST 
FROM myTable 

上記のSQLは、指定されたインデックスではなく、実際の値の列名のみを返します。

+0

使用している方法は望みどおりに機能しません。ストアドプロシージャを作成することができます。変数に 'colname'を格納します。次に、動的SQLを作成して実行します。動的ステートメントの例は次のとおりです。https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/prepare_execute?lang=en – zedfoxus

+0

答えは「いいえ」です。 (動的SQLを使用していない限り、実行時にselectを作成すると、列名がselect文に挿入されます)。 – jarlh

答えて

0

SQLが入力されています。 char(1)、整数型、およびBLOB型に違いがあるため、システムは返されるデータ型を知る必要があります。他の人は、stored procedureを動的SQLで使用することを指摘しています。ただし、ストアドプロシージャでも型付きパラメータがあります。パラメータには相対的な一般的なオプションがありますが、それらのパラメータ構造にはタイプが付いています。次いで

どの関数およびプロシージャで動作するはずする

  1. に列名とデータ型を取得し、
  2. 関数/手順の内側の列を所望のプロセスに動的ステートメントを準備し、実行します。
0

それはのpureXMLを使用することにより可能です:

SELECT 
    XMLQUERY('$X[2]/text()' 
     PASSING XMLCONCAT(
      XMLELEMENT(NAME "col1", first), 
      XMLELEMENT(NAME "col2", middle), 
      XMLELEMENT(NAME "col3", last) 
      --- . . . 
      --- and so on 
     ) AS "X" 
    ) 
FROM employee 

あなたが希望列にアクセスするためにXQuery式のインデックス番号$X[]/text()を変更。

+0

はDB2で可能ですか? – jaypax123

関連する問題