Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Migrer les fonctions et procédures Oracle comportant plus de 100 arguments vers PostgreSQL
Créée par Srinivas Potlachervoo (AWS)
Récapitulatif
Ce modèle montre comment migrer les fonctions et procédures de base de données Oracle comportant plus de 100 arguments vers PostgreSQL. Par exemple, vous pouvez utiliser ce modèle pour migrer les fonctions et procédures Oracle vers l'un des services de base de données AWS compatibles avec PostgreSQL suivants :
Amazon Relational Database Service (Amazon RDS) pour PostgreSQL
Amazon Aurora PostgreSQL-Compatible Edition
PostgreSQL ne prend pas en charge les fonctions ou les procédures comportant plus de 100 arguments. Pour contourner le problème, vous pouvez définir un nouveau type de données dont les champs de type correspondent aux arguments de la fonction source. Vous pouvez ensuite créer et exécuter une fonction PL/pgSQL qui utilise le type de données personnalisé comme argument.
Conditions préalables et limitations
Prérequis
Un compte AWS actif
Une instance de base de données Oracle (DB) Amazon RDS
Une instance de base de données Amazon RDS pour PostgreSQL ou une instance de base de données compatible avec Aurora PostgreSQL
Versions du produit
Instance de base de données Oracle Amazon RDS 10.2 et versions ultérieures
Instance de base de données Amazon RDS PostgreSQL versions 9.4 et ultérieures, ou instances de base de données compatibles Aurora PostgreSQL versions 9.4 et ultérieures
Oracle SQL Developer version 18 et versions ultérieures
pgAdmin version 4 et versions ultérieures
Architecture
Pile technologique source
Instance de base de données Oracle Amazon RDS 10.2 et versions ultérieures
Pile technologique cible
Instance de base de données Amazon RDS PostgreSQL versions 9.4 et ultérieures, ou instances de base de données compatibles Aurora PostgreSQL versions 9.4 et ultérieures
Outils
Services AWS
Amazon Relational Database Service (Amazon RDS) pour PostgreSQL vous aide à configurer, exploiter et dimensionner une base de données relationnelle PostgreSQL dans le cloud AWS.
Amazon Aurora PostgreSQL Compatible Edition est un moteur de base de données relationnelle entièrement géré et compatible ACID qui vous aide à configurer, exploiter et dimensionner les déploiements PostgreSQL.
Autres services
Oracle SQL Developer
est un environnement de développement intégré qui simplifie le développement et la gestion des bases de données Oracle dans les déploiements traditionnels et basés sur le cloud. pgAdmin
est un outil de gestion open source pour PostgreSQL. Il fournit une interface graphique qui vous permet de créer, de gérer et d'utiliser des objets de base de données.
Bonnes pratiques
Assurez-vous que le type de données que vous créez correspond aux champs de type inclus dans la fonction ou procédure Oracle source.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Créez ou identifiez une fonction ou une procédure Oracle/PLSQL existante comportant plus de 100 arguments. | Créez une fonction ou une procédure Oracle/PLSQL comportant plus de 100 arguments. -ou- Identifiez une fonction ou une procédure Oracle/PLSQL existante comportant plus de 100 arguments. Pour plus d'informations, consultez les sections 14.7 Instruction CREATE FUNCTION et 14.11 Instruction | Connaissances d'Oracle/PLSQL |
Compilez la fonction ou la procédure Oracle/PLSQL. | Compilez la fonction ou la procédure Oracle/PLSQL. Pour plus d'informations, voir Compiler une fonction | Connaissances d'Oracle/PLSQL |
Exécutez la fonction Oracle/PLSQL. | Exécutez la fonction ou la procédure Oracle/PLSQL. Enregistrez ensuite le résultat. | Connaissances d'Oracle/PLSQL |
Tâche | Description | Compétences requises |
---|---|---|
Définissez un nouveau type de données dans PostgreSQL. | Définissez un nouveau type de données dans PostgreSQL qui inclut tous les mêmes champs que ceux qui apparaissent dans les arguments de la fonction ou de la procédure Oracle source. Pour plus d'informations, consultez CREATE TYPE | Connaissances de PostgreSQL PL/pgSQL |
Tâche | Description | Compétences requises |
---|---|---|
Créez une fonction PostgreSQL qui inclut le nouveau type de données. | Créez une fonction PostgreSQL qui inclut le nouvel argument. Pour consulter un exemple de fonction, consultez la section Informations supplémentaires de ce modèle. | Connaissances de PostgreSQL PL/pgSQL |
Compilez la fonction PostgreSQL. | Compilez la fonction dans PostgreSQL. Si les nouveaux champs de type de données correspondent aux arguments de la fonction source ou de la procédure, la fonction se compile correctement. | Connaissances de PostgreSQL PL/pgSQL |
Exécutez la fonction PostgreSQL. | Exécutez la fonction PostgreSQL. | Connaissances de PostgreSQL PL/pgSQL |
Résolution des problèmes
Problème | Solution |
---|---|
La fonction renvoie l'erreur suivante : ERREUR : erreur de syntaxe à proximité de « » <statement> | Assurez-vous que toutes les instructions de la fonction se terminent par un point-virgule (). |
La fonction renvoie l'erreur suivante : ERREUR : « » n'est pas une variable connue <variable> | Assurez-vous que la variable utilisée dans le corps de la fonction est répertoriée dans la |
Ressources connexes
Utilisation d'Amazon Aurora PostgreSQL (Guide de l'utilisateur Amazon Aurora pour Aurora)
TYPE DE CRÉATION
(documentation PostgreSQL)
Informations supplémentaires
Exemple de fonction PostgreSQL incluant un argument TYPE
CREATE OR REPLACE FUNCTION test_proc_new
(
IN p_rec type_test_proc_args
)
RETURNS void
AS
$BODY$
BEGIN
/*
**************
The body would contain code to process the input values.
For our testing, we will display couple of values.
***************
*/
RAISE NOTICE USING MESSAGE = CONCAT_WS('', 'p_acct_id: ', p_rec.p_acct_id);
RAISE NOTICE USING MESSAGE = CONCAT_WS('', 'p_ord_id: ', p_rec.p_ord_id);
RAISE NOTICE USING MESSAGE = CONCAT_WS('', 'p_ord_date: ', p_rec.p_ord_date);
END;
$BODY$
LANGUAGE plpgsql
COST 100;