Schritte zum Aufrufen von Google Cloud Run Functions als SQL-Funktionen

Zeigt die Schritte zum Aufrufen von Google Cloud Run-Funktionen als SQL-Funktionen in Ihrer Datenbank an.

Um Google Cloud Run-Funktionen als SQL-Funktionen aufzurufen, erstellen Sie eine Bibliothek mit SQL-Wrapper-Funktionen, die ihre jeweiligen Cloud-Funktionen referenzieren und aufrufen. Bevor Sie diesen Katalog erstellen, wird hier davon ausgegangen, dass Sie die erforderlichen Cloud-Funktionen erstellt haben, die von diesem Katalog referenziert werden sollen. Weitere Informationen finden Sie unter Cloud-Ausführungsfunktion mit der Google Cloud-Konsole erstellen.

  1. Um von einer Autonomous Database-Instanz aus auf Google Cloud Run-Funktionen zuzugreifen, verwenden Sie Ihren Google-Serviceaccount. Sie müssen dem Google-Serviceaccount für die Google Cloud Platform-(GCP-)App die Berechtigung cloudfunctions.functions.list sowie die Rollen Cloud Functions Invoker und Cloud Run Invoker erteilen.
  2. Katalog erstellen. Um einen Katalog für Google Cloud Run-Funktionen mit einem anderen Benutzer als ADMIN zu erstellen, müssen Sie diesem Benutzer Leseberechtigungen für die CLOUD_INTEGRATIONS-Ansicht erteilen.

    Ein Katalog ist eine Sammlung von Wrapper-Funktionen, die ihre jeweiligen Cloud-Funktionen mit ihren API-Endpunkten referenzieren und aufrufen.

    BEGIN
        DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
            credential_name  => 'GCP$PA', 
            catalog_name     => 'GCP_DEMO_CATALOG', 
            service_provider => 'GCP',
            cloud_params     => '{"project_id":"example_XXXXXX"}'
     );
    END;
    /
    

    Der Wert project_id in der cloud_params ist die Projekt-ID der Google Cloud Platform (GCP).

    Dadurch wird der GCP_DEMO_CATALOG-Katalog erstellt und alle Funktionen der angegebenen project_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.

  3. Listen Sie die Funktionen in einem Katalog auf.

    Im Folgenden finden Sie ein Beispiel für die Auflistung der Google Cloud Run-Funktionen:

    VAR function_list CLOB;
    
    BEGIN
        DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS (
            credential_name  => 'GCP$PA',
            catalog_name     => 'GCP_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: Die SYNC_FUNCTIONS-Methode zum Erstellen einer Wrapper-SQL-Funktion ist die schnellste und einfachste Methode, die Wrapper-Funktionen im Katalog automatisch mit der vollständigen Liste der Cloud-Funktionen synchronisiert (erstellt oder löscht), die in der Region, dem Compartment und dem Mandanten definiert sind, mit dem der Katalog erstellt wurde. Beispiel:

    
    BEGIN
        DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS (
            catalog_name => 'GCP_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.

    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 Cloud-Funktion mit DBMS_CLOUD.CREATE_FUNCTION aufruft.

    Beispiel für das Erstellen einer Funktion im Katalog GCP_DEMO_CATALOG.

    EXEC :function_args  := TO_CLOB('{"name": "VARCHAR2"}');
    BEGIN
        DBMS_CLOUD_FUNCTION.CREATE_FUNCTION (
            credential_name => 'GCP$PA',
            catalog_name    => 'GCP_DEMO_CATALOG',
            function_name   => 'gcp_testfunc',
            function_id     => 'function_id_path',
            input_args      => :function_args
     );
    END;
    /
    

    Dadurch wird die Funktion GCP_TESTFUNC im Katalog GCP_DEMO_CATALOG erstellt.

    Die Funktion GCP_TESTFUNC im Katalog ist ein Verweis auf die jeweilige Google Cloud Run-Funktion, deren Projekt-ID vom Parameter FUNCTION_ID referenziert wird. Wenn Sie die Funktion im Katalog zusammen mit ihren Argumenten aufrufen, wird die entsprechende Google Cloud-Ausführungsfunktion 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.

  5. Nachdem die Funktion erstellt wurde, können Sie DESCRIBE aufrufen und sie aufrufen.
    DESC GCP_TESTFUNC
    COLUMN STATUS format a30
    COLUMN OUTPUT format a30
    SELECT GCP_TESTFUNC(NULL) FROM dual;

    Dadurch wird die Funktion GCP_TESTFUNC aufgerufen, indem die im Parameter function_id angegebene Funktionsreferenz aufgerufen wird.

  6. Sie können eine vorhandene Funktion mit der Prozedur DROP_FUNCTION löschen. Beispiel:
    EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'GCP_DEMO_CATALOG', FUNCTION_NAME => 'GCP_TESTFUNC');
    

    Dadurch wird die Funktion GCP_TESTFUNC aus dem Katalog GCP_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. Beispiel:
    BEGIN
        DBMS_CLOUD_FUNCTION.DROP_CATALOG (
            catalog_name     => 'GCP_DEMO_CATALOG'
     );
    END;
    /

    Dadurch wird GCP_DEMO_CATALOG aus der Datenbank gelöscht.

    Weitere Informationen finden Sie unter Prozedur DROP_CATALOG.