2017-03-03 16 views
0

Informix上で以下のようなクエリを試していますが、毎回構文エラー(-201: "構文エラーが発生しました")が表示されます。Informixで「WITH」句で構文エラーが発生するのはなぜですか?

with a_qry (locationnames) as (SELECT * FROM TABLE(LIST{'abc','xyz'})) 
select locationnames from a_qry; 

誰か助けてもらえますか?

+3

構文エラーは? – jarlh

+1

Informixは、CTEに使用される 'WITH' sintaxeをサポートしていません。派生テーブルや 'CONNECT BY'を使っても同様の結果が得られるでしょうか? –

+0

@jarlh:非有益な '-201:A構文エラーが発生しました'というメッセージが表示されます。それはInformixの一般的な "私は何が起こっているのか分かりません"というメッセージです。 –

答えて

2

Informix SELECTステートメントのドキュメントにはWITH句と共通テーブル式(CTE)がサポートされていないため、WITH句は含まれていませんが、重大な省略はありますが、あなたの具体的な例

、あなたが使用できます。

もたらすであろう
SELECT locationnames 
    FROM (SELECT * FROM TABLE(LIST{'abc','xyz'})(locationnames)); 

abc 
xyz 

をサブクエリはここでは必要ありませんが、もちろん、(あなたは、単にSELECT * FROM TABLE(LIST{'abc','xyz'})(locationnames)を使用することができます同じ結果を得るために)。しかし、一般的には、CTEへの各参照を完全に書き出す必要があります。その結果、オプティマイザは共通性に気付かず、最適化もできない場合もありません。

関連する問題