Renvoi d’une valeur

Pour retourner une valeur, utilisez la commande RETURN. Vous pouvez renvoyer une valeur depuis :

  • Un bloc dans une procédure stockée.

  • Un bloc anonyme.

Types de valeurs de retour

Vous pouvez retourner une valeur de l’un des types suivants :

  • Une table

    Utilisez TABLE(...) dans l’instruction RETURN.

    Si votre bloc se trouve dans une procédure stockée, vous devez également spécifier la clause RETURNS TABLE(...) dans l’instruction CREATE PROCEDURE.

    Note

    Actuellement, dans la clause RETURNS TABLE(...), vous ne pouvez pas spécifier GEOGRAPHY comme type de colonne. Ceci s’applique, que vous créiez une procédure stockée ou anonyme.

    CREATE OR REPLACE PROCEDURE test_return_geography_table_1()
      RETURNS TABLE(g GEOGRAPHY)
      ...
    
    Copy
    WITH test_return_geography_table_1() AS PROCEDURE
      RETURNS TABLE(g GEOGRAPHY)
      ...
    CALL test_return_geography_table_1();
    
    Copy

    Si vous tentez de spécifier GEOGRAPHY comme type de colonne, l’appel de la procédure stockée entraîne une erreur :

    Stored procedure execution error: data type of returned table does not match expected returned table type
    
    Copy

    Pour contourner ce problème, vous pouvez omettre les arguments et les types de colonne dans RETURNS TABLE().

    CREATE OR REPLACE PROCEDURE test_return_geography_table_1()
      RETURNS TABLE()
      ...
    
    Copy
    WITH test_return_geography_table_1() AS PROCEDURE
      RETURNS TABLE()
      ...
    CALL test_return_geography_table_1();
    
    Copy

    Si vous souhaitez renvoyer les données vers lesquelles pointe un RESULTSET, passez le RESULTSET à TABLE(...), comme le montre l’exemple ci-dessous :

    CREATE PROCEDURE ...
    RETURNS TABLE(...)
    ...
    RETURN TABLE(my_result_set);
    ...
    
    Copy

    Voir Retourner un RESULTSET comme une table.

Retour de la valeur d’une variable

Cet exemple déclare une variable nommée my_var pour l’utiliser dans un bloc anonyme de Snowflake Scripting, puis renvoie la valeur de la variable :

DECLARE
  my_var VARCHAR;
BEGIN
  my_var := 'Snowflake';
  RETURN my_var;
END;
Copy

Remarque : Si vous utilisez Snowflake CLI, SnowSQL, Classic Console, ou la méthode execute_stream ou execute_string dans le code Connecteur Python, utilisez cet exemple à la place (voir Utilisation de Snowflake Scripting dans Snowflake CLI, SnowSQL, le Classic Console et le connecteur Python) :

EXECUTE IMMEDIATE
$$
DECLARE
  my_var VARCHAR;
BEGIN
  my_var := 'Snowflake';
  RETURN my_var;
END;
$$;
Copy

Utilisation de la valeur renvoyée depuis un appel de procédure stockée

Voir Utilisation de la valeur renvoyée depuis un appel de procédure stockée.