Schritte zum Aufrufen von Azure Functions als SQL-Funktionen
Zeigt die Schritte zum Aufrufen von Azure-Remotefunktionen als SQL-Funktionen in Ihrer 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 unter der zugehörigen Zugriffskontrolle (IAM) die Rolle Website Contributor erteilen.In den folgenden Themen finden Sie weitere Informationen:
- Katalog erstellen.
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-Funktionsapp.Dadurch wird der
AZURE_DEMO_CATALOG
-Katalog erstellt und alle Funktionen der angegebenenSUBSCRIPTION_ID
katalogisiert.Weitere Informationen finden Sie unter Prozedur CREATE_CATALOG. Sie können die Ansichten DBA_CLOUD_FUNCTION_CATALOG View und USER_CLOUD_FUNCTION_CATALOG View abfragen, um die Liste aller Kataloge in Ihrer 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, mit der Wrapper-Funktionen im Katalog automatisch mit der vollständigen Liste der Azure-Funktionen synchronisiert werden (erstellt oder löscht). Beispiel:
BEGIN
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
( catalog_name => 'AZURE_DEMO_CATALOG' ); END; /Dadurch wird ein PL/SQL-Wrapper erstellt, um dem Katalog neue Funktionen hinzuzufügen und Wrapper für Funktionen zu entfernen, 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 überprü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
AZURE_DEMO_CATALOG
-Katalog.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 den zugehörigen Argumenten aufrufen, wird die entsprechende Azure-Funktion ausgeführt und die von der Funktion zurückgegebene Ausgabe bereitgestellt.Sie können die Ansichten DBA_CLOUD_FUNCTION View und USER_CLOUD_FUNCTION View abfragen, um die Liste aller Funktionen in Ihrer Datenbank abzurufen.
Weitere Informationen finden Sie unter Prozedur CREATE_FUNCTION.
Weitere Informationen finden Sie unter Azure Functions - HTTP-Trigger.
-
- Nachdem die Funktion erstellt wurde, können Sie
DESCRIBE
aufrufen und sie 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. Beispiel: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. Beispiel:BEGIN
DBMS_CLOUD_FUNCTION.DROP_CATALOG
( catalog_name => 'AZURE_DEMO_CATALOG' ); END; /Dadurch wird
AZURE_DEMO_CATALOG
aus der Datenbank gelöscht.Weitere Informationen finden Sie unter Prozedur DROP_CATALOG.
Übergeordnetes Thema: Benutzerdefinierte Funktionen aufrufen