Zurückgeben eines Wertes¶
Um einen Wert zurückzugeben, verwenden Sie den Befehl RETURN. Werte können wie folgt zurückgeben werden:
über einen Block in einer gespeicherten Prozedur
über einen anonymen Block
Es können nur Werte mit einem der folgenden Typen zurückgeben werden:
Eine Tabelle Verwenden Sie
TABLE(...)
in derRETURN
-Anweisung.Wenn sich Ihr Block in einer gespeicherten Prozedur befindet, müssen Sie in der CREATE PROCEDURE-Anweisung auch die
RETURNS TABLE...
-Klausel angeben.Bemerkung
Derzeit können Sie in der
RETURNS TABLE(...)
-Klausel den Datentyp GEOGRAPHY nicht als Spaltentyp angeben. Dies gilt unabhängig davon, ob Sie eine gespeicherte oder eine anonyme Prozedur erstellen.CREATE OR REPLACE PROCEDURE test_return_geography_table_1() RETURNS TABLE(g GEOGRAPHY) ...
WITH test_return_geography_table_1() AS PROCEDURE RETURNS TABLE(g GEOGRAPHY) ... CALL test_return_geography_table_1();
Wenn Sie versuchen, GEOGRAPHY als Spaltentyp anzugeben, führt der Aufruf der gespeicherten Prozedur zu einem Fehler:
Stored procedure execution error: data type of returned table does not match expected returned table type
Um dieses Problem zu umgehen, können Sie die Spaltenargumente und -typen in
RETURNS TABLE()
weglassen.CREATE OR REPLACE PROCEDURE test_return_geography_table_1() RETURNS TABLE() ...
WITH test_return_geography_table_1() AS PROCEDURE RETURNS TABLE() ... CALL test_return_geography_table_1();
Wenn Sie die Daten zurückgeben möchten, auf die ein RESULTSET zeigt, übergeben Sie
RESULTSET
anTABLE(...)
, wie im folgenden Beispiel gezeigt:create procedure ... returns table(...) ... return table(my_result_set); ...