Migrer les fonctions et procédures Oracle comportant plus de 100 arguments vers PostgreSQL - Recommandations AWS

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)

Environnement : PoC ou pilote

Source : Oracle

Cible : PostgreSQL

Type R : Replateforme

Charge de travail : Open source ; Oracle

Technologies : bases de données ; migration

Services AWS : Amazon RDS ; Amazon Aurora

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

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

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âcheDescriptionCompé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 CREATE PROCEDURE de la documentation de la base de données Oracle.

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 dans la documentation de la base de données Oracle.

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âcheDescriptionCompé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 dans la documentation de PostgreSQL.

Connaissances de PostgreSQL PL/pgSQL
TâcheDescriptionCompé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. TYPE

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èmeSolution

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 DECLARE section de la fonction.

Ressources connexes

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;