Schritte zum Aufrufen von Azure-Funktionen als SQL-Funktionen
Zeigt die Schritte zum Aufrufen von Azure-Remotefunktionen als SQL-Funktionen in der Datenbank mit HTTP-Trigger an.
Um die Azure-Funktion als SQL-Funktionen aufzurufen, erstellen Sie einen Katalog mit SQL-Wrapper-Funktionen, die ihre jeweilige Cloud-Funktion über ihre API-Endpunkte referenzieren und aufrufen. Bevor Sie diesen Katalog erstellen, wird hier davon ausgegangen, dass Sie die erforderlichen Azure-Funktionen erstellt haben, die von diesem Katalog referenziert werden sollen.
- Um auf Azure-Funktionen zuzugreifen, müssen Sie den Azure-Service-Principal mit Autonomous Database verwenden. Sie müssen dem Azure-Service-Principal für die Azure-Funktionsanwendung die Rolle Website-Beitragender unter der entsprechenden Zugriffskontrolle (IAM) erteilen.In den folgenden Themen finden Sie weitere Informationen:
- Erstellen Sie einen Katalog.
Ein Katalog ist eine Sammlung von Wrapper-Funktionen, die ihre jeweiligen Cloud-Funktionen über ihre API-Endpunkte referenzieren und aufrufen.
Beispiel zum Erstellen eines Katalogs für Azure-Funktionen.
BEGIN
DBMS_CLOUD_FUNCTION.CREATE_CATALOG
( credential_name => 'AZURE$PA', catalog_name => 'AZURE_DEMO_CATALOG', service_provider => 'AZURE', cloud_params => '{"subscription_id":"XXXXXXXXXXXXXXXXXXXXXXXX_example"}' ); END; /Der Wert
SUBSCRIPTION_ID
inCLOUD_PARAMS
ist der Wert subscription_id der Azure-Funktionsanwendung.Dadurch wird der Katalog
AZURE_DEMO_CATALOG
erstellt, und alle Funktionen der angegebenenSUBSCRIPTION_ID
werden katalogisiert.Weitere Informationen finden Sie unter Prozedur CREATE_CATALOG. Sie können die Views DBA_CLOUD_FUNCTION_CATALOG View und USER_CLOUD_FUNCTION_CATALOG View abfragen, um die Liste aller Kataloge in der Datenbank abzurufen.
- Sie können die Funktionen in einem Katalog auflisten.
Im Folgenden finden Sie das Beispiel zum Auflisten von Azure-Funktionen:
VAR function_list CLOB; BEGIN
DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS
( credential_name => 'AZURE$PA', catalog_name => 'AZURE_DEMO_CATALOG', function_list => :function_list ); END; / SELECT JSON_QUERY (:function_list, '$' RETURNING VARCHAR2(32676) pretty) AS search_results FROM dual;Weitere Informationen finden Sie unter Prozedur LIST_FUNCTIONS.
- Führen Sie
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
aus, um Wrapper-SQL-Funktionen zu erstellen. Mit einer der folgenden Methoden können Sie die Wrapper-SQL-Funktionen im Katalog erstellen, die ihre jeweiligen Cloud-Funktionen aufrufen:-
SYNC_FUNCTIONS:
SYNC_FUNCTIONS
ist die schnellste und einfachste Methode, die Wrapper-Funktionen im Katalog automatisch mit der vollständigen Liste der Azure-Funktionen synchronisiert (erstellt oder löscht). Beispiele:
BEGIN
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
( catalog_name => 'AZURE_DEMO_CATALOG' ); END; /Dadurch wird ein PL/SQL-Wrapper erstellt, mit dem dem Katalog neue Funktionen hinzugefügt und Wrapper für Funktionen entfernt werden können, die aus dem Katalog gelöscht wurden.
Hinweis
Wenn eine Azure-Funktion in der Azure-Funktionsanwendung hinzugefügt, gelöscht oder deaktiviert wird, müssen Sie dieSYNC_FUNCTIONS
ausführen, um die entsprechenden PL/SQL-Wrapper im Katalog zu aktualisieren.Führen Sie die folgende Abfrage aus, um die Synchronisierung zu prüfen.
SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION';
Hinweis
Notieren Sie sich den aktuellen Benutzer, um diesen Befehl auszuführen.Weitere Informationen finden Sie unter Prozedur SYNC_FUNCTIONS.
- Sie können manuell eine
SQL
-Funktion in Ihrem Katalog erstellen, die ihre jeweilige Azure-Funktion mitAZURE_DEMO_CATALOG
aufruft.
Beispiel zum Erstellen einer Funktion im Katalog
AZURE_DEMO_CATALOG
.BEGIN
DBMS_CLOUD_FUNCTION.CREATE_FUNCTION
( credential_name => 'AZURE$PA', catalog_name => 'AZURE_DEMO_CATALOG', function_name => 'azure_testfunc', function_id => 'function_id_path', input_args => :function_args ); END; /Hinweis
Die maximale Länge des Funktionsnamens ist auf 100 Zeichen begrenzt.Dadurch wird die Funktion
AZURE_TESTFUNC
im KatalogAZURE_DEMO_CATALOG
erstellt.Die Funktion
AZURE_TESTFUNC
im Katalog ist eine Referenz auf die jeweilige Azure-Funktion, deren Abonnement vom ParameterFUNCTION_ID
referenziert wird. Wenn Sie die Funktion im Katalog zusammen mit ihren Argumenten aufrufen, wird die entsprechende Azure-Funktion ausgeführt und die von der Funktion zurückgegebene Ausgabe bereitgestellt.Sie können die Views DBA_CLOUD_FUNCTION View und USER_CLOUD_FUNCTION View abfragen, um die Liste aller Funktionen in der Datenbank abzurufen.
Weitere Informationen finden Sie unter Prozedur CREATE_FUNCTION.
Weitere Informationen finden Sie unter HTTP-Trigger für Azure Functions.
-
- Nachdem die Funktion erstellt wurde, können Sie
DESCRIBE
aufrufen.DESC AZURE_TESTFUNC
SELECT AZURE_TESTFUNC(NULL) FROM dual;
Dadurch wird die Funktion
AZURE_TESTFUNC
aufgerufen, indem die Funktionsreferenz/subscriptions/44496e556-8ssp-4262-b389-0f15f685c879/resources/ADBStest/providers/Microsoft.Web/sites/AZUREADBS/functions/HttpTrigger_example
im KatalogAZURE_DEMO_CATALOG
aufgerufen wird. - Sie können eine vorhandene Funktion mit der Prozedur
DROP_FUNCTION
löschen. Beispiele:EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'AZURE_DEMO_CATALOG', FUNCTION_NAME => 'AZURE_TESTFUNC');
Dadurch wird die Funktion
AZURE_TESTFUNC
aus dem KatalogAZURE_DEMO_CATALOG
gelöscht.Weitere Informationen finden Sie unter Prozedur DROP_FUNCTION.
- Sie können einen vorhandenen Katalog mit der Prozedur
DROP_CATALOG
löschen. Beispiele:BEGIN
DBMS_CLOUD_FUNCTION.DROP_CATALOG
( catalog_name => 'AZURE_DEMO_CATALOG' ); END; /Dadurch wird der
AZURE_DEMO_CATALOG
aus der Datenbank gelöscht.Weitere Informationen finden Sie unter Prozedur DROP_CATALOG.
Übergeordnetes Thema: Benutzerdefinierte Funktionen aufrufen