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:

  • Um tipo de dados SQL.

  • 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)
      ...
    
    Copy
    WITH test_return_geography_table_1() AS PROCEDURE
      RETURNS TABLE(g GEOGRAPHY)
      ...
    CALL test_return_geography_table_1();
    
    Copy

    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
    
    Copy

    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()
      ...
    
    Copy
    WITH test_return_geography_table_1() AS PROCEDURE
      RETURNS TABLE()
      ...
    CALL test_return_geography_table_1();
    
    Copy

    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);
    ...
    
    Copy

    Consulte Como retornar um RESULTSET como uma tabela.