Passi per richiamare le funzioni di esecuzione di Google Cloud come funzioni SQL
Mostra i passi per richiamare le funzioni di Google Cloud Run come funzioni SQL nel database.
Per richiamare le funzioni di Google Cloud Run come funzioni SQL, è possibile creare una libreria di funzioni wrapper SQL che fanno riferimento e richiamano le rispettive funzioni cloud. Prima di creare questo catalogo, si presume che siano state create le funzioni cloud necessarie a cui questo catalogo fa riferimento. Per ulteriori informazioni, vedere Creare una funzione Cloud Run utilizzando la console di Google Cloud.
- Per accedere alle funzioni di Google Cloud Run da un'istanza di Autonomous Database, utilizzare l'account del servizio Google. È necessario concedere l'autorizzazione
cloudfunctions.functions.list
e i ruoliCloud Functions Invoker
eCloud Run Invoker
all'account di servizio Google per l'applicazione Google Cloud Platform (GCP).Per ulteriori informazioni, vedere gli argomenti riportati di seguito. - Creare un catalogo. Per creare un catalogo per le funzioni di Google Cloud Run con un utente diverso da
ADMIN
, è necessario concedere a tale utente i privilegi di lettura sulla vistaCLOUD_INTEGRATIONS
.Un catalogo è una raccolta di funzioni wrapper che fanno riferimento e richiamano le rispettive funzioni cloud utilizzando gli endpoint API.
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; /Il valore
project_id
nel filecloud_params
è l'ID progetto della piattaforma Google Cloud (GCP).Questo crea il catalogo
GCP_DEMO_CATALOG
e cataloga tutte le funzioni delproject_id
fornito.Per ulteriori informazioni, vedere CREATE_CATALOG Procedura. È possibile eseguire una query sulle viste DBA_CLOUD_FUNCTION_CATALOG View e USER_CLOUD_FUNCTION_CATALOG View per recuperare la lista di tutti i cataloghi nel database.
- Elenca le funzioni in un catalogo.
Di seguito è riportato l'esempio per elencare le funzioni di Google Cloud Run:
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;Per ulteriori informazioni, vedere LIST_FUNCTIONS Procedura.
- Eseguire
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
per creare funzioni SQL wrapper. È possibile utilizzare uno dei seguenti metodi per creare le funzioni SQL wrapper nel catalogo, che richiamano le rispettive funzioni cloud:-
SYNC_FUNCTIONS: il metodo
SYNC_FUNCTIONS
per creare la funzione SQL wrapper è il metodo più rapido e semplice, che sincronizza automaticamente (crea o elimina) le funzioni wrapper nel catalogo con la lista completa delle funzioni cloud definite nell'area, nel compartimento e nella tenancy con cui è stato creato il catalogo. Ad esempio:
BEGIN
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
( catalog_name => 'GCP_DEMO_CATALOG' ); END; /In questo modo viene creato un wrapper PL/SQL per l'aggiunta di nuove funzioni al catalogo e la rimozione dei wrapper per le funzioni eliminate dal catalogo.
Eseguire la seguente query per verificare la sincronizzazione.
SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION';
Nota
Per eseguire questo comando, conservare una nota dell'utente corrente.Per ulteriori informazioni, vedere SYNC_FUNCTIONS Procedura.
- È possibile creare manualmente nel catalogo una funzione
SQL
che richiama la rispettiva funzione cloud utilizzandoDBMS_CLOUD.CREATE_FUNCTION
.
Esempio di creazione di una funzione nel catalogo
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; /In questo modo viene creata la funzione
GCP_TESTFUNC
nel catalogoGCP_DEMO_CATALOG
.La funzione
GCP_TESTFUNC
nel catalogo fa riferimento alla rispettiva funzione di esecuzione di Google Cloud a cui il parametroFUNCTION_ID
fa riferimento l'ID progetto. Richiamando la funzione nel catalogo insieme ai relativi argomenti viene eseguita la funzione di esecuzione di Google Cloud corrispondente e viene fornito l'output restituito dalla funzione.È possibile eseguire una query sulle viste DBA_CLOUD_FUNCTION View e USER_CLOUD_FUNCTION View per recuperare la lista di tutte le funzioni del database.
Per ulteriori informazioni, vedere CREATE_FUNCTION Procedura.
-
- Dopo aver creato la funzione, è possibile
DESCRIBE
e richiamarla.DESC GCP_TESTFUNC COLUMN STATUS format a30 COLUMN OUTPUT format a30
SELECT GCP_TESTFUNC(NULL) FROM dual;
La funzione
GCP_TESTFUNC
viene richiamata richiamando il riferimento funzione specificato nel parametrofunction_id
. - È possibile eliminare una funzione esistente utilizzando la procedura
DROP_FUNCTION
. Ad esempio:EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'GCP_DEMO_CATALOG', FUNCTION_NAME => 'GCP_TESTFUNC');
La funzione
GCP_TESTFUNC
viene eliminata dal catalogoGCP_DEMO_CATALOG
.Per ulteriori informazioni, vedere DROP_FUNCTION Procedura.
- È possibile eliminare un catalogo esistente utilizzando la procedura
DROP_CATALOG
. Ad esempio:BEGIN
DBMS_CLOUD_FUNCTION.DROP_CATALOG
( catalog_name => 'GCP_DEMO_CATALOG' ); END; /Viene eliminato
GCP_DEMO_CATALOG
dal database.Per ulteriori informazioni, vedere DROP_CATALOG Procedura.
Argomento padre: Richiama funzioni definite dall'utente