Schritte zum Aufrufen von Google Cloud Run-Funktionen 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 Library 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 über eine Autonomous Database-Instanz auf Google Cloud Run-Funktionen zuzugreifen, verwenden Sie Ihr Google-Servicekonto. 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 Ansicht CLOUD_INTEGRATIONS 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 cloud_params ist die Projekt-ID der Google Cloud Platform (GCP).

    Dadurch wird der GCP_DEMO_CATALOG-Katalog erstellt und alle Funktionen des 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 Methode SYNC_FUNCTIONS zum Erstellen der Wrapper-SQL-Funktion ist die schnellste und einfachste Methode, mit der Wrapper-Funktionen im Katalog automatisch mit der vollständigen Liste der Cloud-Funktionen synchronisiert (erstellt oder gelöscht) werden, die in der Region, dem Compartment und dem Mandanten definiert sind, mit denen der Katalog erstellt wurde. Beispiele:

    
    BEGIN
        DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS (
            catalog_name => 'GCP_DEMO_CATALOG'
     );
    END;
    /
    

    Dadurch wird ein PL/SQL-Wrapper erstellt, mit dem Sie dem Katalog neue Funktionen hinzufügen und Wrapper für Funktionen entfernen können, die aus dem Katalog gelöscht wurden.

    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 eine SQL-Funktion in Ihrem Katalog manuell erstellen, die ihre jeweilige Cloud-Funktion mit DBMS_CLOUD.CREATE_FUNCTION aufruft.

    Beispiel zum 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 den zugehörigen Argumenten aufrufen, wird die entsprechende Google Cloud Run-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 der Datenbank abzurufen.

    Weitere Informationen finden Sie unter Prozedur CREATE_FUNCTION.

  5. Nachdem die Funktion erstellt wurde, können Sie DESCRIBE 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. Beispiele:
    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. Beispiele:
    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.