Appeler des procédures externes en tant que fonctions SQL
Affiche les étapes permettant d'appeler des procédures externes à l'aide de PL/SQL au sein de la base de données.
- Présentation des procédures externes
Les procédures externes sont des fonctions écrites dans un langage de troisième génération et pouvant être appelées à partir de PL/SQL ou SQL, comme s'il s'agissait d'une routine ou d'une fonction PL/SQL. - A propos de l'utilisation de procédures externes dans Autonomous Database
Vous pouvez appeler et utiliser des procédures externes dans votre instance Autonomous Database avec des fonctions définies par l'utilisateur. - Définir la procédure C
Définir la procédure C à l'aide de l'un de ces prototypes. - Création d'un fichier de bibliothèque partagée (.so)
Créer une bibliothèque d'objets partagés (fichier.so
). La bibliothèque d'objets partagés contient la procédure C (procédure externe) qui a été définie à l'étape précédente. - Obtenir l'application OCI Marketplace EXTPROC Stack
Indique les étapes à suivre pour obtenir l'application OCI MarketplaceEXTPROC
Stack. - Lancement de l'application de pile EXTPROC
Lancez l'application de pileEXTPROC
à partir de la page Détails de l'application EXTPROC. - Création d'une pile pour l'application d'agent EXTPROC
Affiche les étapes de création d'une pile pour l'instanceEXTPROC
. - Téléchargement du portefeuille pour créer une connexion sécurisée vers l'instance d'agent EXTPROC
Un portefeuille auto-signé est créé dans le cadre de la création de l'application d'agentEXTPROC
. Ce portefeuille vous permet d'accéder à l'instance d'agentExtrpoc
. - Etapes d'appel d'une procédure externe en tant que fonction SQL
Affiche les étapes permettant d'appeler une procédure externe en tant que fonction SQL.
Rubrique parent : Appel de fonctions définies par l'utilisateur
Présentation des procédures externes
Les procédures externes sont des fonctions écrites dans un langage de troisième génération et pouvant être appelées à partir de code PL/SQL ou SQL comme s'il s'agissait d'une routine ou d'une fonction PL/SQL.
Les procédures externes favorisent la réutilisabilité, l'efficacité et la modularité. Les bibliothèques de liens dynamiques (DLL) existantes écrites dans d'autres langages peuvent être appelées à partir de programmes PL/SQL. Les DLL ne sont chargées qu'en cas de besoin et peuvent être améliorées sans affecter les programmes appelants.
L'utilisation de procédures externes améliore également les performances, car les langages de troisième génération exécutent certaines tâches plus efficacement que le langage PL/SQL, qui est mieux adapté au traitement des transactions SQL.
Les procédures externes sont utiles lorsque :
-
Résoudre les problèmes scientifiques et techniques
-
Analyse des données
-
Contrôle des appareils et des processus en temps réel
Pour plus d'informations, voir Qu'est-ce qu'une procédure externe ?.
Rubrique parent : Appel de procédures externes en tant que fonctions SQL
A propos de l'utilisation de procédures externes dans Autonomous Database
Vous pouvez appeler et utiliser des procédures externes dans votre instance Autonomous Database avec des fonctions définies par l'utilisateur.
Vous n'installez pas de procédures externes sur une instance Autonomous Database. Pour utiliser une procédure externe, la procédure est hébergée à distance sur une machine virtuelle exécutée sur un réseau cloud virtuel Oracle Cloud Infrastructure (VCN).
Les procédures externes ne sont prises en charge que lorsque votre instance Autonomous Database se trouve sur une adresse privée. L'instance d'agent EXTPROC
est hébergée sur un sous-réseau privé et Autonomous Database accède à l'agent EXTPROC
via une adresse de connexion inverse (RCE).
Autonomous Database prend uniquement en charge les procédures externes en langage C.
Les procédures externes sont déployées à l'aide des éléments suivants :
-
Image de conteneur fournie par Oracle avec l'agent
EXTPROC
installé et configuré dans le cadre de la pile Oracle Cloud Infrastructure (OCI) Marketplace.L'instance d'agent
EXTPROC
est hébergée à distance sur une machine virtuelle exécutée sur un réseau cloud virtuel Oracle Cloud Infrastructure (VCN). La communication sécurisée entre votre instance Autonomous Database et l'instance d'agentEXTPROC
est assurée par la définition de règles de groupe de sécurité réseau (NSG) de sorte que le trafic soit autorisé de l'instance Autonomous Database exécutée sur une adresse privée vers l'instance d'agentEXTPROC
.L'image de l'agent
EXTPROC
est préconfigurée pour héberger et exécuter des procédures externes sur le port 16000. -
Procédures PL/SQL permettant de créer une bibliothèque et d'enregistrer et d'appeler des fonctions et procédures externes.
Pour plus d'informations, reportez-vous à la section DBMS_CLOUD_FUNCTION Package.
Pour appeler une procédure externe sur Autonomous Database, procédez comme suit :
-
Définissez la procédure C. Voir Définir la procédure C.
-
Créez une bibliothèque d'objets partagés (fichier
.so
). Reportez-vous à la section Create a Shared Library (.so) File. -
Lancez l'application de pile Autonomous Database
EXTPROC
. Reportez-vous à Obtention de l'application OCI Marketplace EXTPROC Stack. -
Provisionnez et configurez l'agent Oracle Autonomous Database
EXTPROC
. Pour plus d'informations, reportez-vous à Création d'une pile pour une application d'agent EXTPROC. -
Configurez votre instance Autonomous Database pour qu'elle se connecte à l'instance d'agent
EXTPROC
. Pour plus d'informations, reportez-vous à Téléchargement de portefeuille vers l'instance d'agent EXTPROC pour créer une connexion sécurisée. -
Créez une bibliothèque distante à l'aide de
DBMS_CLOUD_FUNCTION.CREATE_CATALOG
. Pour plus d'informations, reportez-vous à Etapes permettant d'appeler une procédure externe en tant que fonction SQL. -
Utilisez la fonction définie par l'utilisateur que vous avez créée à l'étape précédente. Pour plus d'informations, reportez-vous à Etapes permettant d'appeler une procédure externe en tant que fonction SQL.
Rubrique parent : Appel de procédures externes en tant que fonctions SQL
Définition de la procédure C
Définissez la procédure C en utilisant l'un de ces prototypes.
-
Prototypes de style Kernighan & Ritchie. Par exemple :
void UpdateSalary(x) float x; ...
-
prototypes ISO/ANSI autres que les types de données numériques dont la largeur est inférieure à la largeur totale (tels que
float
,short
,char
). Par exemple :void UpdateSalary(double x) ...
-
Autres types de données qui ne changent pas de taille sous les promotions par argument par défaut.
Cet exemple modifie la taille sous Promotions de l'argument par défaut :
void UpdateSalary(float x) ...
Rubrique parent : Appel de procédures externes en tant que fonctions SQL
Création d'un fichier de bibliothèque partagée (.so)
Créez une bibliothèque d'objets partagés (fichier .so
). La bibliothèque d'objets partagés contient la procédure C (procédure externe) qui a été définie à l'étape précédente.
Vous générez une bibliothèque d'objets partagée à l'aide de la commande suivante :
gcc -I/u01/app/oracle/extproc_libs/ -shared -fPIC -o extproc.so UpdateSalary.c
Cela crée l'objet partagé (.so
), bibliothèque extproc.so
. La procédure UpdateSalary
, définie à l'étape précédente, figure dans la bibliothèque extproc.so
. Les bibliothèques d'objets partagés (.so
) sont chargées dynamiquement lors de l'exécution.
Rubrique parent : Appel de procédures externes en tant que fonctions SQL
Obtenir l'application OCI Marketplace EXTPROC Stack
Présente les étapes d'obtention de l'application de pile EXTPROC
OCI Marketplace.
Rubrique parent : Appel de procédures externes en tant que fonctions SQL
Lancer l'application de pile EXTPROC
Lancez l'application de pile EXTPROC
à partir de la page Détails de l'application EXTPROC.
Vous accédez ainsi à la page Créer une pile qui vous permet de créer une pile pour l'agent EXTPROC
.
Rubrique parent : Appel de procédures externes en tant que fonctions SQL
Créer une pile pour l'application d'agent EXTPROC
Présente les étapes de création de pile pour l'instance EXTPROC
.
Rubrique parent : Appel de procédures externes en tant que fonctions SQL
Télécharger le portefeuille pour créer une connexion sécurisée à l'instance d'agent EXTPROC
Un portefeuille auto-signé est créé dans le cadre de la création de l'application d'agent EXTPROC
. Ce portefeuille vous permet d'accéder à l'instance d'agent Extrpoc
.
EXTPROC
, Autonomous Database et l'agent EXTPROC
se connectent à l'aide de l'authentification par couche Transport Layer Security (mTLS). Lorsque le protocole mTLS (Mutual Transport Layer Security) est utilisé, les clients se connectent via une connexion de base de données TCP (Secure TCP) à l'aide du Protocole TLS 1.2 standard avec un certificat d'autorité de certificat client sécurisé. Pour plus d'informations, reportez-vous à A propos de la connexion à une instance Autonomous Database.
Vous pouvez également obtenir et utiliser un certificat public émis par une autorité de certification.
Vous devez au préalable exporter le portefeuille vers Object Storage à partir du répertoire /u01/app/oracle/extproc_wallet
sur la machine virtuelle où EXTPROC
est exécuté.
Pour télécharger le portefeuille vers votre instance Autonomous Database, procédez comme suit :
Rubrique parent : Appel de procédures externes en tant que fonctions SQL
Etapes d'appel d'une procédure externe en tant que fonction SQL
Affiche les étapes permettant d'appeler une procédure externe en tant que fonction SQL.
Après avoir lancé l'application de pile OCI Marketplace EXTPROC
et l'avoir configurée pour exécuter des procédures externes, vous créez une bibliothèque de fonctions de wrapper SQL qui référencent et appellent leurs procédures externes respectives.
Vous devez au préalable copier les bibliothèques sur liste blanche dans le répertoire /u01/app/oracle/extproc_libs
sur la machine virtuelle EXTPROC
.
Rubrique parent : Appel de procédures externes en tant que fonctions SQL