Appeler des procédures externes en tant que fonctions SQL
Présente les étapes permettant d'appeler des procédures externes à l'aide de PL/SQL dans 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éfinition de la procédure C
Définissez la procédure C à l'aide de l'un de ces prototypes. - 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. - Obtention de l'application de pile OCI Marketplace EXTPROC
Affiche les étapes pour obtenir l'application de pile OCI MarketplaceEXTPROC
. - 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 à l'instance d'agent EXTPROC
Un portefeuille auto-signé est créé lors 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 d'appel d'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 du code PL/SQL ou SQL comme s'il s'agissait d'un sous-programme 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 que lorsque cela est nécessaire 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, mieux adapté au traitement des transactions SQL.
Les procédures externes sont utiles dans les cas suivants :
-
Résoudre des problèmes scientifiques et techniques
-
Analyse des données
-
Contrôle des appareils et des processus en temps réel
Pour plus d'informations, reportez-vous à 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 (VCN) Oracle Cloud Infrastructure.
Les procédures externes sont prises en charge uniquement 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.
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 :
-
Une image de conteneur fournie par Oracle avec un 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 (VCN) Oracle Cloud Infrastructure. La communication sécurisée entre votre instance Autonomous Database et l'instance d'agentEXTPROC
est assurée en définissant des règles de groupe de sécurité réseau de sorte que le trafic soit autorisé à partir de votre 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, d'enregistrer et d'appeler des fonctions et procédures externes.
Pour plus d'informations, reportez-vous à 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
EXTPROC
Autonomous Database. Reportez-vous à Obtention de l'application de pile EXTPROC OCI Marketplace. -
Provisionnez et configurez l'agent
EXTPROC
d'Oracle Autonomous Database. Pour plus d'informations, reportez-vous à Création d'une pile pour l'application d'agent EXTPROC. -
Configurez votre instance Autonomous Database pour vous connecter à l'instance d'agent
EXTPROC
. Pour plus d'informations, reportez-vous à Téléchargement du portefeuille pour créer une connexion sécurisée à l'instance d'agent EXTPROC. -
Créez une bibliothèque distante à l'aide de
DBMS_CLOUD_FUNCTION.CREATE_CATALOG
. Pour plus d'informations, reportez-vous à Etapes d'appel d'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 d'appel d'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 à l'aide de 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 dans le cadre des promotions d'argument par défaut.
Cet exemple montre comment modifier la taille des promotions d'argument par défaut :
void UpdateSalary(float x) ...
Rubrique parent : Appel de procédures externes en tant que fonctions SQL
Créer 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és à 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
), la bibliothèque extproc.so
. La procédure UpdateSalary
, définie à l'étape précédente, est contenue 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 EXTPROC Stack
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 la 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 sur laquelle 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
Présente les étapes permettant d'appeler une procédure externe en tant que fonction SQL.
Après avoir lancé l'application de pile EXTPROC
OCI Marketplace 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
de la machine virtuelle EXTPROC
.
Rubrique parent : Appel de procédures externes en tant que fonctions SQL