Étapes pour appeler des fonctions Azure en tant que fonctions SQL
Affiche les étapes permettant d'appeler des fonctions distantes Azure en tant que fonctions SQL dans votre base de données à l'aide d'un déclencheur HTTP.
Pour appeler la fonction Azure en tant que fonctions SQL, créez un catalogue de fonctions d'encapsuleur SQL qui référencent et appellent leur fonction en nuage respective au moyen de leurs points d'extrémité d'API. Avant de créer ce catalogue, il est supposé que vous avez créé les fonctions Azure nécessaires pour être référencées par ce catalogue.
- Pour accéder aux fonctions Azure, vous devez utiliser le principal de service Azure avec Autonomous AI Database. Vous devez accorder le rôle Contributeur de site Web au principal de service Azure pour l'application de fonction Azure sous son contrôle d'accès (IAM).Voir ce qui suit pour plus d'informations :
- création d'un catalogue;
Un catalogue est une collection de fonctions d'encapsuleur qui référencent et appellent leurs fonctions en nuage respectives au moyen de leurs points d'extrémité d'API.
Exemple pour créer un catalogue pour les fonctions Azure.
BEGINDBMS_CLOUD_FUNCTION.CREATE_CATALOG( credential_name => 'AZURE$PA', catalog_name => 'AZURE_DEMO_CATALOG', service_provider => 'AZURE', cloud_params => '{"subscription_id":"XXXXXXXXXXXXXXXXXXXXXXXX_example"}' ); END; /La valeur
SUBSCRIPTION_IDdansCLOUD_PARAMSest subscription_id de l'application de fonction Azure.Cela crée le catalogue
AZURE_DEMO_CATALOGet catalogue toutes les fonctions deSUBSCRIPTION_IDfournies.Pour plus d'informations, voir ProcédureCREATE_CATALOG. Vous pouvez interroger les vues Vue DBA_CLOUD_FUNCTION_CATALOG et Vue USER_CLOUD_FUNCTION_CATALOG pour extraire la liste de tous les catalogues de votre base de données.
- Vous pouvez répertorier les fonctions dans un catalogue.
Voici l'exemple de liste des fonctions Azure :
VAR function_list CLOB; BEGINDBMS_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;Pour plus d'informations, voir ProcédureLIST_FUNCTIONS.
- Exécutez
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONSpour créer des fonctions SQL d'encapsuleur. Vous pouvez utiliser l'une des méthodes suivantes pour créer les fonctions SQL du wrapper dans le catalogue, qui appellent leurs fonctions cloud respectives :-
SYNC_FUNCTIONS :
SYNC_FUNCTIONSest la méthode la plus rapide et la plus simple, qui synchronise automatiquement (crée ou supprime) les fonctions d'encapsuleur dans le catalogue avec la liste complète des fonctions Azure. Exemple :
BEGINDBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS( catalog_name => 'AZURE_DEMO_CATALOG' ); END; /Cela crée un wrapper PL/SQL permettant d'ajouter de nouvelles fonctions au catalogue et de supprimer des wrappers pour les fonctions qui ont été supprimées du catalogue.
Note
Lorsqu'une fonction Azure est ajoutée, supprimée ou désactivée dans l'application de fonction Azure, vous devez exécuterSYNC_FUNCTIONSpour mettre à jour les encapsules PL/SQL correspondantes dans le catalogue.Exécutez l'interrogation suivante pour vérifier la synchronisation.
SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION';Note
Conservez une note de l'utilisateur courant pour exécuter cette commande.Pour plus d'informations, voir ProcédureSYNC_FUNCTIONS.
- Vous pouvez créer manuellement une fonction
SQLdans votre catalogue qui appelle sa fonction Azure respective à l'aide deAZURE_DEMO_CATALOG.
Exemple pour créer une fonction dans le catalogue
AZURE_DEMO_CATALOG.BEGINDBMS_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; /Note
La longueur maximale du nom de la fonction est limitée à 100 caractères.Cela crée la fonction
AZURE_TESTFUNCdans le catalogueAZURE_DEMO_CATALOG.La fonction
AZURE_TESTFUNCdans le catalogue est une référence à la fonction Azure respective dont l'abonnement est référencé par le paramètreFUNCTION_ID. L'appel de la fonction dans le catalogue avec ses arguments exécute la fonction Azure correspondante et fournit la sortie retournée par la fonction.Vous pouvez interroger les vues Vue DBA_CLOUD_FUNCTION et Vue USER_CLOUD_FUNCTION pour extraire la liste de toutes les fonctions de votre base de données.
Pour plus d'informations, voir ProcédureCREATE_FUNCTION.
Pour plus d'informations, voir Trigger HTTP des fonctions Azure.
-
- Une fois la fonction créée, vous pouvez
DESCRIBEet l'appeler.DESC AZURE_TESTFUNCSELECT AZURE_TESTFUNC(NULL) FROM dual;Cela appelle la fonction
AZURE_TESTFUNCen appelant la référence de fonction/subscriptions/44496e556-8ssp-4262-b389-0f15f685c879/resources/ADBStest/providers/Microsoft.Web/sites/AZUREADBS/functions/HttpTrigger_exampledans le catalogueAZURE_DEMO_CATALOG. - Vous pouvez supprimer une fonction existante à l'aide de la procédure
DROP_FUNCTION. Exemple :EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'AZURE_DEMO_CATALOG', FUNCTION_NAME => 'AZURE_TESTFUNC');Cette action supprime la fonction
AZURE_TESTFUNCdu catalogueAZURE_DEMO_CATALOG.Pour plus d'informations, voir ProcédureDROP_FUNCTION.
- Vous pouvez supprimer un catalogue existant à l'aide de la procédure
DROP_CATALOG. Exemple :BEGINDBMS_CLOUD_FUNCTION.DROP_CATALOG( catalog_name => 'AZURE_DEMO_CATALOG' ); END; /Cette action supprime
AZURE_DEMO_CATALOGde la base de données.Pour plus d'informations, voir ProcédureDROP_CATALOG.
Rubrique parent : Appeler des fonctions définies par l'utilisateur