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.

  1. 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.
  2. 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 in CLOUD_PARAMS ist der Wert subscription_id der Azure-Funktionsanwendung.

    Dadurch wird der Katalog AZURE_DEMO_CATALOG erstellt, und alle Funktionen der angegebenen SUBSCRIPTION_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.

  3. 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.

  4. 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 die SYNC_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 mit AZURE_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 Katalog AZURE_DEMO_CATALOG erstellt.

    Die Funktion AZURE_TESTFUNC im Katalog ist eine Referenz auf die jeweilige Azure-Funktion, deren Abonnement vom Parameter FUNCTION_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.

  5. 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 Katalog AZURE_DEMO_CATALOG aufgerufen wird.

  6. 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 Katalog AZURE_DEMO_CATALOG gelöscht.

    Weitere Informationen finden Sie unter Prozedur DROP_FUNCTION.

  7. 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.