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
Typen von Rückgabewerten¶
Es können nur Werte mit einem der folgenden Typen zurückgeben werden:
Ein SQL-Datentyp
Eine Tabelle
Verwenden Sie
TABLE(...)
in der RETURN-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 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 an
TABLE(...)
, wie im folgenden Beispiel gezeigt:CREATE PROCEDURE ... RETURNS TABLE(...) ... RETURN TABLE(my_result_set); ...
Rückgabe des Wertes einer Variablen¶
In diesem Beispiel wird eine Variable mit dem Namen my_var
für die Verwendung in einem anonymen Snowflake Scripting-Block deklariert und anschließend der Wert der Variable zurückgegeben:
DECLARE
my_var VARCHAR;
BEGIN
my_var := 'Snowflake';
RETURN my_var;
END;
Hinweis: Wenn Sie Snowflake CLI, SnowSQL, die Classic Console, oder die Methode execute_stream
oder execute_string
in Python Connector Code verwenden, benutzen Sie stattdessen dieses Beispiel (siehe Verwenden von Snowflake Scripting in Snowflake CLI, SnowSQL, Classic Console und im Python-Connector):
EXECUTE IMMEDIATE
$$
DECLARE
my_var VARCHAR;
BEGIN
my_var := 'Snowflake';
RETURN my_var;
END;
$$;
Verwenden des vom Aufruf einer gespeicherten Prozedur zurückgegebenen Wertes¶
Siehe Verwenden des vom Aufruf einer gespeicherten Prozedur zurückgegebenen Wertes.