Auswählen aus einer gespeicherten Prozedur¶
Einige gespeicherte Prozeduren geben tabellarische Daten zurück. Um diese Tabellendaten auszuwählen und zu bearbeiten, können Sie diese gespeicherten Prozeduren in der FROM-Klausel einer SELECT-Anweisung aufrufen.
Führen Sie eine SELECT-Anweisung mit dem TABLE-Schlüsselwort aus¶
Wenn Sie die gespeicherte Prozedur aufrufen, lassen Sie den Befehl CALL weg. Verwenden Sie stattdessen das TABLE Schlüsselwort, und benennen Sie die Prozedur in Klammern:
Beispiel für die Auswahl aus einer gespeicherten Prozedur¶
Dieses Beispiel verwendet die Daten in der folgenden Tabelle:
Die folgende gespeicherte Prozedur gibt Auftragsinformationen auf der Grundlage einer Benutzer-ID zurück:
Note: If you use Snowflake CLI, SnowSQL, the Classic Console, or the
execute_stream or execute_string method in Python Connector
code, use this example instead (see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):
Mit der folgenden SELECT-Anweisung können Sie die Ergebnisse der gespeicherten Prozedur abrufen:
Beschränkungen für die Auswahl aus einer gespeicherten Prozedur¶
Die folgenden Beschränkungen gelten für die Auswahl aus einer gespeicherten Prozedur:
Nur gespeicherte Prozeduren, die die Anweisungen SELECT, SHOW, DESCRIBE oder CALL ausführen, können in der FROM-Klausel einer SELECT-Anweisung platziert werden. Gespeicherte Prozeduren, die Änderungen mit den Operationen DDL oder DML vornehmen, sind nicht erlaubt. Für gespeicherte Prozeduren, die CALL-Anweisungen ausgeben, gelten diese Beschränkungen für die aufgerufenen gespeicherten Prozeduren.
Nur gespeicherte Prozeduren, die tabellarische Daten mit einem statischen Ausgabeschema zurückgeben, können in der FROM-Klausel einer SELECT-Anweisung platziert werden. Die Ausgabespalten müssen benannt und typisiert werden. Zum Beispiel wird eine gespeicherte Prozedur mit der folgenden RETURNS-Klausel unterstützt:
Eine gespeicherte Prozedur mit der folgenden RETURNS-Klausel wird nicht unterstützt, da sie keine tabellarischen Daten zurückgibt:
Eine gespeicherte Prozedur mit der folgenden RETURNS-Klausel wird nicht unterstützt, da sie kein festes Ausgabeschema bietet:
Die gespeicherte Prozedur muss in der FROM-Klausel eines SELECT-Blocks in einer der folgenden Anweisungen aufgerufen werden:
Die gespeicherte Prozedur kann keine korrelierten Eingabeargumente aus ihrem äußeren Bereich akzeptieren, wie z. B. eine Referenz auf eine CTE, die außerhalb der SELECT-Anweisung definiert ist.
Wenn ein Argument eine Unterabfrage enthält, dann kann diese Unterabfrage keine CTE verwenden, die durch die WITH-Klausel definiert ist.
Eine SELECT-Anweisung, die einen Aufruf einer gespeicherten Prozedur enthält, kann nicht im Body einer Ansicht, einer benutzerdefinierten Funktion (UDF), einer benutzerdefinierten Tabellenfunktion (UDTF) oder in Objekten wie Zeilenzugriffsrichtlinien und Maskierungsrichtlinien verwendet werden.
Sie können Bindungsvariablen in einer SELECT-Anweisung, die eine gespeicherte Prozedur aufruft, nicht verwenden. Beispielsweise sind die folgenden SELECT-Anweisungen nicht zulässig: