Etapes d'appel de fonctions d'exécution Google Cloud en tant que fonctions SQL
Affiche les étapes permettant d'appeler des fonctions Google Cloud Run en tant que fonctions SQL dans la base de données.
Pour appeler des fonctions Google Cloud Run en tant que fonctions SQL, vous créez une bibliothèque de fonctions de wrapper SQL qui référencent et appellent leurs fonctions cloud respectives. Avant de créer ce catalogue, il est supposé que vous avez créé les fonctions cloud nécessaires à référencer par ce catalogue. Pour plus d'informations, reportez-vous à Création d'une fonction Cloud Run à l'aide de la console Google Cloud.
- Pour accéder aux fonctions Google Cloud Run à partir d'une instance Autonomous Database, utilisez votre compte de service Google. Vous devez accorder le droit d'accès
cloudfunctions.functions.list
et les rôlesCloud Functions Invoker
etCloud Run Invoker
au compte de service Google pour l'application Google Cloud Platform (GCP).Pour plus d'informations, reportez-vous à : - Création d'un catalogue Pour créer un catalogue pour les fonctions d'exécution Google Cloud avec un utilisateur autre que
ADMIN
, vous devez lui accorder des privilèges de lecture sur la vueCLOUD_INTEGRATIONS
.Un catalogue est un ensemble de fonctions de wrapper qui référencent et appellent leurs fonctions cloud respectives à l'aide de leurs adresses d'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; /La valeur
project_id
danscloud_params
est l'ID de projet de la plate-forme Google Cloud (GCP).Cela crée le catalogue
GCP_DEMO_CATALOG
et catalogue toutes les fonctions de l'élémentproject_id
fourni.Pour plus d'informations, reportez-vous à Procédure CREATE_CATALOG. Vous pouvez interroger les vues DBA_CLOUD_FUNCTION_CATALOG View et USER_CLOUD_FUNCTION_CATALOG View pour extraire la liste de tous les catalogues de la base de données.
- Répertorier les fonctions d'un catalogue.
Voici l'exemple pour répertorier les fonctions 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;Pour plus d'informations, reportez-vous à Procédure LIST_FUNCTIONS.
- Exécutez
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
pour créer des fonctions SQL de wrapper. Vous pouvez utiliser l'une des méthodes suivantes pour créer les fonctions SQL wrapper dans le catalogue, qui appellent leurs fonctions cloud respectives :-
SYNC_FUNCTIONS : la méthode
SYNC_FUNCTIONS
permettant de créer une fonction SQL de wrapper est la méthode la plus rapide et la plus simple, qui synchronise automatiquement (crée ou supprime) les fonctions de wrapper dans le catalogue avec la liste complète des fonctions cloud définies dans la région, le compartiment et la location avec lesquels le catalogue a été créé. Par exemple :
BEGIN
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
( catalog_name => 'GCP_DEMO_CATALOG' ); END; /Cela crée un wrapper PL/SQL pour ajouter de nouvelles fonctions au catalogue et enlever des wrappers pour les fonctions qui ont été supprimées du catalogue.
Exécutez la requête suivante pour vérifier la synchronisation.
SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION';
Remarque
Notez l'utilisateur en cours pour exécuter cette commande.Pour plus d'informations, reportez-vous à Procédure SYNC_FUNCTIONS.
- Vous pouvez créer manuellement une fonction
SQL
dans votre catalogue qui appelle sa fonction cloud respective à l'aide deDBMS_CLOUD.CREATE_FUNCTION
.
Exemple permettant de créer une fonction dans le catalogue
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; /La fonction
GCP_TESTFUNC
est ainsi créée dans le catalogueGCP_DEMO_CATALOG
.La fonction
GCP_TESTFUNC
du catalogue est une référence à la fonction Google Cloud Run respective dont l'ID de projet est référencé par le paramètreFUNCTION_ID
. Appeler la fonction dans le catalogue avec ses arguments exécute la fonction Google Cloud Run correspondante et fournit la sortie renvoyée par la fonction.Vous pouvez interroger les vues DBA_CLOUD_FUNCTION View et USER_CLOUD_FUNCTION View pour extraire la liste de toutes les fonctions de la base de données.
Pour plus d'informations, reportez-vous à Procédure CREATE_FUNCTION.
-
- Une fois la fonction créée, vous pouvez
DESCRIBE
et l'appeler.DESC GCP_TESTFUNC COLUMN STATUS format a30 COLUMN OUTPUT format a30
SELECT GCP_TESTFUNC(NULL) FROM dual;
La fonction
GCP_TESTFUNC
est appelée en appelant la référence de fonction indiquée dans le paramètrefunction_id
. - Vous pouvez supprimer une fonction existante en utilisant la procédure
DROP_FUNCTION
. Par exemple :EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'GCP_DEMO_CATALOG', FUNCTION_NAME => 'GCP_TESTFUNC');
La fonction
GCP_TESTFUNC
est supprimée du catalogueGCP_DEMO_CATALOG
.Pour plus d'informations, reportez-vous à Procédure DROP_FUNCTION.
- Vous pouvez supprimer un catalogue existant en utilisant la procédure
DROP_CATALOG
. Par exemple :BEGIN
DBMS_CLOUD_FUNCTION.DROP_CATALOG
( catalog_name => 'GCP_DEMO_CATALOG' ); END; /Cette opération supprime
GCP_DEMO_CATALOG
de la base de données.Pour plus d'informations, reportez-vous à Procédure DROP_CATALOG.
Rubrique parent : Appel de fonctions définies par l'utilisateur