TRY-Ausdruck
Der Ausdruck TRY stellt sicher, dass Fehler, die durch die Eingabezeilen im untergeordneten (skalaren) Ausdruck verursacht werden, für diese Zeilen zu NULL führen, statt die Abfrage mit einem Fehler abzubrechen.
Der Ausdruck
TRYist vom AusdruckTRY_CASTinspiriert.
Beispiele
Die folgenden Aufrufe liefern Fehler, wenn sie ohne den Ausdruck TRY ausgeführt werden.
Werden sie in einen TRY-Ausdruck gewrappt, liefern sie NULL:
Typumwandlung
Ohne TRY
SELECT 'abc'::INTEGER;Conversion Error:Could not convert string 'abc' to INT32Mit TRY
SELECT TRY('abc'::INTEGER);NULLLogarithmus von Null
Ohne TRY
SELECT ln(0);Out of Range Error:cannot take logarithm of zeroMit TRY
SELECT TRY(ln(0));NULLTypumwandlung mehrerer Zeilen
Ohne TRY
WITH cte AS (FROM (VALUES ('123'), ('test'), ('235')) t(a))SELECT a::INTEGER AS x FROM cte;Conversion Error:Could not convert string 'test' to INT32Mit TRY
WITH cte AS (FROM (VALUES ('123'), ('test'), ('235')) t(a))SELECT TRY(a::INTEGER) AS x FROM cte;| x |
|---|
| 123 |
| NULL |
| 235 |
Einschränkungen
TRY kann nicht zusammen mit einer volatilen Funktion, einer Aggregatfunktion oder einer skalaren Unterabfrage verwendet werden.
Zum Beispiel:
SELECT TRY(random())Binder Error:TRY can not be used in combination with a volatile function