Renvoyer 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.
Vous pouvez retourner une valeur de l’un des types suivants :
Une table. Utilisez
TABLE(...)
dans l’instructionRETURN
.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) ...
WITH test_return_geography_table_1() AS PROCEDURE RETURNS TABLE(g GEOGRAPHY) ... CALL test_return_geography_table_1();
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
Pour contourner ce problème, vous pouvez omettre les arguments et les types de colonnes dans
RETURNS TABLE()
.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();
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); ...