Como retornar um valor¶
Para retornar um valor, use o comando RETURN. Você pode retornar um valor de:
Um bloco em um procedimento armazenado.
Um bloco anônimo.
Você pode retornar um valor de um dos seguintes tipos:
Uma tabela. Use
TABLE(...)
na instruçãoRETURN
.Se seu bloco estiver em um procedimento armazenado, você também deve especificar a cláusula
RETURNS TABLE...
na instrução CREATE PROCEDURE.Nota
Atualmente, na cláusula
RETURNS TABLE(...)
, você não pode especificar GEOGRAPHY como um tipo de coluna. Isso se aplica se você estiver criando um procedimento armazenado ou anônimo.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();
Se você tentar especificar GEOGRAPHY como um tipo de coluna, chamar o procedimento armazenado resultará no erro:
Stored procedure execution error: data type of returned table does not match expected returned table type
Para contornar isso, você pode omitir os argumentos da coluna e digitar
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();
Se você quiser retornar os dados para os quais um RESULTSET aponta, passe o
RESULTSET
paraTABLE(...)
como mostrado no exemplo abaixo:create procedure ... returns table(...) ... return table(my_result_set); ...