列のインデックスに基づいて列の値を取得することは可能ですか?以下のようなSQL 何か:DB2の列名の代わりに列のインデックス番号で選択してください
SELECT
(SELECT colname
FROM syscat.columns
WHERE tabname = 'myTable' AND colno=100) AS TEST
FROM myTable
上記のSQLは、指定されたインデックスではなく、実際の値の列名のみを返します。
列のインデックスに基づいて列の値を取得することは可能ですか?以下のようなSQL 何か:DB2の列名の代わりに列のインデックス番号で選択してください
SELECT
(SELECT colname
FROM syscat.columns
WHERE tabname = 'myTable' AND colno=100) AS TEST
FROM myTable
上記のSQLは、指定されたインデックスではなく、実際の値の列名のみを返します。
SQLが入力されています。 char(1)、整数型、およびBLOB型に違いがあるため、システムは返されるデータ型を知る必要があります。他の人は、stored procedureを動的SQLで使用することを指摘しています。ただし、ストアドプロシージャでも型付きパラメータがあります。パラメータには相対的な一般的なオプションがありますが、それらのパラメータ構造にはタイプが付いています。次いで
どの関数およびプロシージャで動作するはずする
それはの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()
を変更。
はDB2で可能ですか? – jaypax123
使用している方法は望みどおりに機能しません。ストアドプロシージャを作成することができます。変数に 'colname'を格納します。次に、動的SQLを作成して実行します。動的ステートメントの例は次のとおりです。https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/prepare_execute?lang=en – zedfoxus
答えは「いいえ」です。 (動的SQLを使用していない限り、実行時にselectを作成すると、列名がselect文に挿入されます)。 – jarlh