Package DBMS_CLOUD_FUNCTION

Le package DBMS_CLOUD_FUNCTION vous permet d'appeler des fonctions distantes OCI et AWS Lambda dans votre base de données AI autonome en tant que fonctions SQL.

Remarques :

La prise en charge de DBMS_CLOUD_FUNCTION est disponible dans Oracle Database 19c à partir de la version 19.29, et dans Oracle AI Database 26ai à partir de la version 23.26.

Récapitulatif des sous-programmes DBMS_CLOUD_FUNCTION

Ce tableau récapitule les sous-programmes inclus dans le package DBMS_CLOUD_FUNCTION.

Table - Sous-programmes DBMS_CLOUD_FUNCTION

Sous-programme Description
Procédure CREATE_CATALOG Cette procédure crée un catalogue.
Procédure CREATE_FUNCTION Cette procédure crée des fonctions dans un catalogue.
Procédure DROP_CATALOG Cette procédure supprime un catalogue et les fonctions créées à l'aide du catalogue.
Procédure DROP_FUNCTION Cette procédure supprime des fonctions d'un catalogue.
Procédure LIST_FUNCTIONS Cette procédure répertorie toutes les fonctions d'un catalogue.
Procédure SYNC_FUNCTIONS Cette procédure permet d'ajouter des fonctions au catalogue et de supprimer des fonctions qui ont été supprimées du catalogue.

Procédure CREATE_CATALOG

La procédure DBMS_CLOUD_FUNCTION.CREATE_CATALOG crée un catalogue dans la base de données. Un catalogue est un ensemble de fonctions qui crée l'infrastructure requise pour exécuter des sous-routines.

Syntaxe

DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
    credential_name             IN VARCHAR2,
    catalog_name                IN VARCHAR2,
    service_provider            IN VARCHAR2, 
    cloud_params                IN CLOB
);

Paramètres

Paramètre Description

credential_name

Spécifie le nom des informations d'identification pour l'authentification.

Ce paramètre est obligatoire.

service_provider

Indique le type du fournisseur de services.

Ce paramètre peut avoir pour valeur de paramètre OCI ou AWS.

Ce paramètre est obligatoire.

catalog_name

Spécifie le nom du catalogue.

Ce paramètre est obligatoire.

cloud_params

Fournit un paramètre à la fonction. Par exemple, OCID de compartiment et régions.

Ce paramètre est obligatoire.

Erreurs

Code d'erreur Description

ORA-20000

Cette erreur est générée dans la condition suivante :

  • La valeur cloud_params est manquante ou des valeurs de paramètre incorrectes sont transmises.

ORA-20001

Cette erreur est générée dans la condition suivante :

  • Les informations d'identification référencées dans credential_name n'existent pas.

ORA-20002

Cette erreur est générée dans la condition suivante :

  • Cette erreur est générée lorsque le catalogue existe déjà.

ORA-20009

Cette erreur est générée lorsque le prestataire de services n'existe pas.

Exemples 

BEGIN
    DBMS_CLOUD_FUNCTION.CREATE_CATALOG (
        credential_name  => 'DEFAULT_CREDENTIAL', 
        catalog_name     => 'OCI_DEMO_CATALOG', 
        service_provider => 'OCI',
        cloud_params     => ("region_id":"us-phoenix-1", "compartment_id":"compartment_id"
 );
END;
/

Remarque sur l'utilisation

  • Pour créer un catalogue, vous devez être connecté en tant qu'utilisateur ADMIN ou disposer des privilèges suivants :
    • DBMS_CLOUD_OCI_FNC_FUNCTIONS_INVOKE

    • DBMS_CLOUD_OCI_FNC_FUNCTIONS_INVOKE_INVOKE_FUNCTION_RESPONSE_T

    • DBMS_CLOUD

    • Privilège de lecture sur USER_CLOUD_FUNCTION

    • Privilège de lecture sur USER_CLOUD_FUNCTION_CATALOG

Procédure CREATE_FUNCTION

Cette procédure crée des fonctions dans un catalogue.

Syntaxe

La procédure DBMS_CLOUD_FUNCTION.CREATE_FUNCTION n'est prise en charge que pour les fonctions cloud.

DBMS_CLOUD_FUNCTION.CREATE_FUNCTION (
    credential_name   IN VARCHAR2,
    catalog_name      IN VARCHAR2,
    function_name     IN VARCHAR2,
    function_id       IN VARCHAR2,
    input_args        IN CLOB      DEFAULT NULL,
    return_type       IN VARCHAR2  DEFAULT 'CLOB',
    response_handler  IN VARCHAR2  DEFAULT NULL
);

Signature du gestionnaire de réponses

<USER DEFINED TYPE> response_handler_name(function_response in CLOB)RETURNS CLOB;

Le type de retour est défini par l'utilisateur ou de type PL/SQL. function_response est au format JSON avec des champs.

'{  
"STATUS":"<RESPONCE STATUS>",  
"RESPONSE_BODY":"<FUNCTION RESPONSE>"
}'

Paramètres

Paramètre Description

credential_name

Spécifie le nom des informations d'identification pour l'authentification.

Ce paramètre est obligatoire.

catalog_name

Spécifie le nom du catalogue.

Ce paramètre est obligatoire.

function_name

Indique le nom de la fonction PL/SQL.

Ce paramètre est obligatoire.

function_id

La valeur du paramètre function_id fait référence à la fonction OCI ou à AWS Lambda.

Ce paramètre est obligatoire.

input_args

Spécifie la paire JSON de valeur de clé acceptant les arguments d'entrée et leurs types.

return_type

Définit le type d'effet renvoyé par la fonction.

Le type de retour est de type CLOB.

response_handler

Spécifie le callback défini par l'utilisateur pour gérer la réponse.

Erreurs

Code d'erreur Description

ORA-20001

Cette erreur est générée lorsque les informations d'identification référencées dans credential_name n'existent pas.

ORA-20003

Cette erreur est générée lorsque le catalogue spécifié n'existe pas.

ORA-20004

Cette erreur est générée lorsque la fonction spécifiée existe déjà.

ORA-20005

Cette erreur est générée lorsque l'ID de fonction ou la fonction Amazon Resource Names (ARN) n'existe pas.

ORA-20006

Cette erreur est générée lorsque les arguments d'entrée ne sont pas valides.

ORA-20007

Cette erreur est générée lorsque le type de retour est manquant ou non valide.

ORA-20008

Cette erreur est générée lorsque le gestionnaire de réponses est manquant ou non valide.

Exemple

VAR function_args CLOB;
EXEC :function_args := TO_CLOB('{"command": "VARCHAR2", "value": "VARCHAR2"}');
BEGIN
    DBMS_CLOUD_FUNCTION.CREATE_FUNCTION (
	credential_name  => 'DEFAULT_CREDENTIAL',    
       catalog_name     => 'OCI_DEMO_CATALOG',
       function_name    => 'demo_function', 
       function_id      => 'ocid1.fnfunc.oc1.phx.aaaaaaaazkrbjv6ntowwxlbbp5ct4otsj4o2hdw4ayosyosv4sthmya2lyza',
       input_args       => :function_args);
 );
END;
/

Procédure DROP_CATALOG

La procédure DBMS_CLOUD_FUNCTION.DROP_CATALOG supprime le catalogue et les fonctions créés à l'aide du catalogue.

Syntaxe

DBMS_CLOUD_FUNCTION.DROP_CATALOG (
    catalog_name      IN VARCHAR2
 );

Paramètres

Paramètre Description

catalog_name

Spécifie le nom du catalogue.

Ce paramètre est obligatoire.

Erreurs

Code d'erreur Description

ORA-20003

Cette erreur est générée lorsque le catalogue indiqué n'existe pas.

Par exemple :

BEGIN
    DBMS_CLOUD_FUNCTION.DROP_CATALOG (
      catalog_name     => 'OCI_DEMO_CATALOG'
  );
END;
/

Procédure DROP_FUNCTION

La procédure DBMS_CLOUD_FUNCTION.DROP_FUNCTION supprime la fonction.

Syntaxe

La procédure DBMS_CLOUD_FUNCTION.DROP_FUNCTION n'est prise en charge que pour les fonctions cloud.

DBMS_CLOUD_FUNCTION.DROP_FUNCTION (
    catalog_name      IN VARCHAR2,
    function_name     IN VARCHAR2
);

Paramètres

Paramètre Description

catalog_name

Spécifie le nom du catalogue.

Ce paramètre est obligatoire.

function_name

Spécifie le nom de la fonction à supprimer.

Ce paramètre est obligatoire.

Erreurs

Code d'erreur Description

ORA-20003

Cette erreur est générée lorsque la fonction spécifiée n'existe pas.

Exemples 

BEGIN
    DBMS_CLOUD_FUNCTION.DROP_FUNCTION (
       catalog_name     => 'OCI_DEMO_CATALOG',
       function_name    => 'demo_function');
END;
/

Procédure LIST_FUNCTIONS

Cette procédure répertorie toutes les fonctions d'un catalogue.

Syntaxe

DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS (
    credential_name   IN VARCHAR2,
    catalog_name      IN VARCHAR2,
    function_list     OUT VARCHAR2
);

Paramètres

Paramètre Description

credential_name

Spécifie le nom des informations d'identification pour l'authentification.

Ce paramètre est obligatoire.

function_list

Renvoie la liste des fonctions au format JSON.

Ce paramètre est obligatoire.

catalog_name

Spécifie le nom du catalogue.

Ce paramètre est obligatoire.

Erreurs

Code d'erreur Description

ORA-20000

Cette erreur est générée lorsque des valeurs de paramètre incorrectes sont transmises.

ORA-20001

Cette erreur est générée lorsque les informations d'identification référencées dans credential_name n'existent pas.

ORA-20003

Cette erreur est générée lorsque le catalogue spécifié n'existe pas.

Par exemple :

VAR function_list CLOB;
BEGIN
    DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS (
	credential_name  => 'DEFAULT_CREDENTIAL', 
	catalog_name     => 'OCI_DEMO_CATALOG',  
	function_list    => :function_list);
 );
END;
/
SELECT JSON_QUERY(:function_list, '$' RETURNING VARCHAR2(32676) pretty) AS search_results FROM dual;

Procédure SYNC_FUNCTIONS

Cette procédure permet d'ajouter des fonctions au catalogue et de supprimer des fonctions qui ont été supprimées du catalogue.

Syntaxe

DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS (
    catalog_name      IN VARCHAR2,
    refresh_rate     IN VARCHAR2 DEFAULT 'DAILY'
);

Paramètres

Paramètre Description

catalog_name

Spécifie le nom du catalogue.

Ce paramètre est obligatoire.

refresh_rate

Indique la fréquence d'actualisation de la fonction.

refresh_rate peut accepter les valeurs suivantes :
  • HOURLY

  • DAILY

  • WEEKLY

  • MONTHLY

La valeur par défaut de ce paramètre est DAILY.

Erreurs

Code d'erreur Description

ORA-20003

Cette erreur est générée lorsque le catalogue spécifié n'existe pas.

ORA-20004

Cette erreur est générée lorsqu'une valeur non valide est transmise pour le paramètre refresh_rate.

Par exemple :


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