1.5 問合せの位置番号
SQL文中に指定されている問合せ指定および表値構成子に対して,先頭からの指定順に位置番号が1から割り振られます。これを問合せの位置番号といい,SQL文のエラーメッセージ中に問合せの位置番号が出力されることがあります。
- (例)
-
KFAA30202-E Column "C1" is not found in any table. (query number = 2)
上記のメッセージは,指定した列名に誤りがあるときなどに出力されます。このとき,問合せの位置番号が下線部分に表示されます。
例えば,次のSQL文を実行した際に,上記のメッセージが出力された場合,問合せの位置番号が2である問合せ指定または表値構成子の指定に誤りがあることを示しています。
実行したSQL文の例
SELECT * FROM "T1" WHERE EXISTS (SELECT "C1" FROM "T2")
この例の場合,下線部分の問合せ指定(先頭から2番目の問合せ指定)に誤りがあることを示しています。表T2にC1列が存在しないため,SQL文がエラーになっています。
■問合せの位置番号の例
-
SELECT文の場合
-
INSERT文(VALUES指定)またはPURGE CHUNK文の場合
INSERT文(VALUES指定)の例を次に示します。PURGE CHUNK文の場合も,同様に問合せの位置番号が割り振られます。
■留意事項
-
エラーの原因がビュー表の場合は,そのビュー表を指定した問合せ指定の位置番号が表示されます。
(例)
KFAA30323-E The specification of the multiset value expression is invalid. (reason = a subquery of a multiset value expression is a correlated subquery, query number = 2)
実行したSQL文の例
SELECT * FROM TABLE (ADB_CSVREAD(MULTISET(SELECT "C1" FROM "V1"), 'COMPRESSION_FORMAT=GZIP;')) "DT"("DC1" INT)
この例の場合,下線部分の問合せ指定(先頭から2番目の問合せ指定)に誤りがあります。マルチ集合値式の表副問合せ中に指定できないビュー表(ビュー定義中に外への参照列を含むビュー表)を指定しているため,SQL文がエラーになっています。
-
誤りがある個所が,SQL文中の問合せ指定および表値構成子以外の場合は,問合せの位置番号に0が表示されます。
(例)
KFAA30117-E The number of insert values is not equal to the number of insert columns. (query number = 0)
実行したSQL文の例
INSERT INTO "T1"("C1") VALUES('XYZ',100)
この例の場合,挿入値と挿入列の数が一致していないため,SQL文がエラーになっています。