Zurückgeben eines Wertes

Um einen Wert zurückzugeben, verwenden Sie den Befehl RETURN. Werte können wie folgt zurückgeben werden:

  • über einen Block in einer gespeicherten Prozedur

  • über einen anonymen Block

Es können nur Werte mit einem der folgenden Typen zurückgeben werden:

  • Eine Tabelle Verwenden Sie TABLE(...) in der RETURN-Anweisung.

    Wenn sich Ihr Block in einer gespeicherten Prozedur befindet, müssen Sie in der CREATE PROCEDURE-Anweisung auch die RETURNS TABLE...-Klausel angeben.

    Bemerkung

    Derzeit können Sie in der RETURNS TABLE(...)-Klausel den Datentyp GEOGRAPHY nicht als Spaltentyp angeben. Dies gilt unabhängig davon, ob Sie eine gespeicherte oder eine anonyme Prozedur erstellen.

    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

    Wenn Sie versuchen, GEOGRAPHY als Spaltentyp anzugeben, führt der Aufruf der gespeicherten Prozedur zu einem Fehler:

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

    Um dieses Problem zu umgehen, können Sie die Spaltenargumente und -typen in RETURNS TABLE() weglassen.

    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

    Wenn Sie die Daten zurückgeben möchten, auf die ein RESULTSET zeigt, übergeben Sie RESULTSET an TABLE(...), wie im folgenden Beispiel gezeigt:

    create procedure ...
    returns table(...)
    ...
    return table(my_result_set);
    ...
    
    Copy

    Siehe Zurückgeben eines RESULTSET als Tabelle.