Rückgabe von Tabellendaten aus einer gespeicherten Java-Prozedur¶
Sie können eine Prozedur schreiben, die Daten in tabellarischer Form zurückgibt. Gehen Sie wie folgt vor, um eine Prozedur zu schreiben, die Tabellendaten zurückgibt:
Geben Sie in der CREATE PROCEDURE-Anweisung
TABLE(...)als Rückgabetyp der Prozedur an.Als TABLE-Parameter können Sie die Spaltennamen und Typen der zurückgegebenen Daten angeben, sofern Sie diese kennen. Wenn Sie beim Definieren der Prozedur die zurückgegebenen Spalten nicht kennen – z. B. wenn diese zur Laufzeit angegeben werden – können Sie die TABLE-Parameter weglassen. Wenn Sie dies tun, werden die Spalten des Rückgabewerts der Prozedur aus den Spalten des Datenframes konvertiert, der vom Handler zurückgegeben wird. Spaltendatentypen werden gemäß der unter Zuordnung von Datentypen zwischen SQL und Java angegebenen Zuordnung in SQL konvertiert.
Schreiben Sie den Handler so, dass er das tabellarische Ergebnis in einem Snowpark-DataFrame zurückgibt.
Weitere Informationen zu Datenframes finden Sie unter Verwenden von DataFrames in Snowpark Java.
Bemerkung
Eine Prozedur generiert zur Laufzeit einen Fehler, wenn eine der folgenden Bedingungen zutrifft:
TABLE ist als Rückgabetyp deklariert, aber sein Handler gibt keinen DataFrame zurück.
Der Handler gibt einen DataFrame zurück, aber die Prozedur deklariert TABLE nicht als Rückgabetyp.
Beispiel¶
Die Beispiele in diesem Abschnitt veranschaulichen die Rückgabe von Tabellenwerten aus einer Prozedur, die Zeilen herausfiltert, in denen eine Spalte mit einer Zeichenfolge übereinstimmt.
Definieren der Daten¶
Der Code im folgenden Beispiel erstellt eine Tabelle der Mitarbeiter.
Deklarieren einer Prozedur zum Filtern von Zeilen¶
Der Code in den folgenden beiden Beispielen erstellt eine gespeicherte Prozedur, die den Tabellennamen und die Rolle als Argumente verwendet und die Zeilen der Tabelle zurückgibt, deren Rollenspaltenwert mit der als Argument angegebenen Rolle übereinstimmt.
Angeben von Namen und Typen der Rückgabespalten¶
In diesem Beispiel werden Spaltennamen und -typen in der RETURNS TABLE()-Anweisung angegeben.
Bemerkung
Derzeit können Sie in der RETURNS TABLE(...)-Klausel den Datentyp GEOGRAPHY als Spaltentyp angeben. Dies gilt unabhängig davon, ob Sie eine gespeicherte oder eine anonyme Prozedur erstellen.
Wenn Sie versuchen, GEOGRAPHY als Spaltentyp anzugeben, führt der Aufruf der gespeicherten Prozedur zu einem Fehler:
Um dieses Problem zu umgehen, können Sie die Spaltenargumente und -typen in RETURNS TABLE() weglassen.
Weglassen von Namen und Typen der Rückgabespalten¶
Der Code im folgenden Beispiel deklariert eine Prozedur, mit der Spaltennamen und -typen des Rückgabewerts aus den im Rückgabewert des Handlers enthaltenen Spalten extrapoliert werden können. Die Spaltennamen und -typen aus der RETURNS TABLE()-Anweisung werden weggelassen.
Aufrufen der Prozedur¶
Im folgenden Beispiel wird die gespeicherte Prozedur aufgerufen:
Der Prozeduraufruf erzeugt die folgende Ausgabe: