Retorno de 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ção RETURN.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 este problema, 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 para
TABLE(...)
como mostrado no exemplo abaixo:CREATE PROCEDURE ... RETURNS TABLE(...) ... RETURN TABLE(my_result_set); ...