Die Dokumentation für die Informix SELECT-Anweisung enthält die WITH-Klausel nicht, da der Server die WITH-Klausel und die allgemeinen Tabellenausdrücke (CTEs) nicht unterstützt - ein schwerwiegendes Versäumnis, aber dennoch eine Tatsache des Lebens.
Für Ihr spezifisches Beispiel könnten Sie verwenden:
SELECT locationnames
FROM (SELECT * FROM TABLE(LIST{'abc','xyz'})(locationnames));
, die ergeben würden:
abc
xyz
wenn die Unterabfrage nicht notwendig ist hier natürlich (Sie einfach SELECT * FROM TABLE(LIST{'abc','xyz'})(locationnames)
nutzen könnten um das gleiche Ergebnis zu erhalten). Im Allgemeinen müssen Sie jedoch jede Bezugnahme auf einen CTE vollständig aufschreiben, mit dem Risiko, dass der Optimierer die Gemeinsamkeit nicht erkennt und daher nicht so gut wie möglich optimiert.
Und der Syntaxfehler sagt? – jarlh
Informix unterstützt die 'WITH'-Syntax nicht, die für CTEs verwendet wird. Vielleicht können ähnliche Ergebnisse mit abgeleiteten Tabellen oder mit 'CONNECT BY' erhalten werden? –
@jarlh: Es wird die nicht informative Meldung "-201: Ein Syntaxfehler ist aufgetreten" angezeigt. Das ist Informix 'allgemeine "Ich habe keine Ahnung, was los ist" -Nachricht. –