IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

[10g] Comprendre step by step le corps d'un package


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Février 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Février 2014
    Messages : 10
    Par défaut [10g] Comprendre step by step le corps d'un package
    Dans le cadre d'un travail de retro documentation, je dois documenter les différentes actions d'un traitement.
    Celui-ci se base entre autre sur un package SQL.
    Ayant des notions basiques en SQL, je ne suis vraiment pas câlé en algorithmique et en programmation en général.

    Fonctionellement, ce package est utilisé par un ETL interne, qui suite à la reception de 2 fichiers sources retraite les données fournis . Après cela, 2 tables cibles sont alimentées.

    En gros le package RAULPCPT s'occupe de l'alimentation de ces 2 tables.

    J'aurais besoin de votre aide pour comprendre les différentes fonctions composants ce package.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create or replace package RAULPCPT as
    		-- 23/04/09 ST CG
    		-- Fichier de log de CPT
    	 FicLog UTL_FILE.FILE_TYPE;
    		-- 23/04/09 ST CG
    		-- Ouverture du fichier de log
    	 FUNCTION  OPEN_LOG(pNomProc in varchar2, pNomFichier in varchar2, pDir in varchar2) return varchar2;
    		-- 23/04/09 ST CG
    		-- Fermeture du fichier de log
                   PROCEDURE LOG_MESSAGE(pNomProc in varchar2, pMessage in varchar2);
                                -- Lance les differentes procedures d'alimentation des tables ACCOUNT et ENTITY
                   FUNCTION CPT_01(pPeriode in varchar2, pCodeEnt in varchar2) return varchar2;
    • Donc ce que j'ai compris c'est que tout d'abord, On définit le type, déclare les variables dans l'en-tête des différentes fonctions et procédures.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FUNCTION  OPEN_LOG(pNomProc in varchar2, pNomFichier in varchar2, pDir in varchar2) return varchar2;
    la ligne ci-dessus signifie, par exemple que la fonction OPEN_LOG prend en entrée les variables pNomProc , pNomFichier , pDir tous 3 de types varchar2 et renvoie une valeur de même type

    Maintenant , en regardant la fonction OPEN_LOG , je n'arrive pas à comprendre ce qu'elle fait exactement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    OPEN_LOG(pNomProc in varchar2, pNomFichier in varchar2, pDir in varchar2) return varchar2
     as
     begin
    	RAULPCOM.OPEN_LOG(pNomProc, pDir, pNomFichier, FicLog);
    	return 'OK';
     exception
    	when others then
    		return 'KO';
     end OPEN_LOG;
    Notamment la ligne suivante : RAULPCOM.OPEN_LOG(pNomProc, pDir, pNomFichier, FicLog);

    • Même chose pour la procédure LOG_MESSAGE :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    -- Log d'un message
     PROCEDURE LOG_MESSAGE(pNomProc in varchar2, pMessage in varchar2)
     as
     begin
    	RAULPCOM.LOG_MESSAGE(pNomProc, FicLog, pMessage);
     end LOG_MESSAGE;
    Et pour la dernière, pouvez-vous svp m'expliquer ce qu'elle fait exactement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    FUNCTION CPT_01(pPeriode in varchar2, pCodeEnt in varchar2) return varchar2
     as
    	codRetGeneral  varchar2(2) := 'OK';
    	codRet1 varchar2(2) := 'OK';
    	codRet2 varchar2(2) := 'OK';
    	codRet3 varchar2(2) := 'OK';
    	ref_fichier UTL_FILE.FILE_TYPE;
     begin
    	RAULPCOM.HORODATE_DEB_LOG('CPT', FicLog);
     
    	-- pour test
    	codRet1 := INIT_CPT;
     
    	if codRet1 = 'OK' then
    		codRet2 := ALIM_ENTITY(pPeriode);
    		codRet3 := ALIM_ACCOUNT(pPeriode);
     
    		if codRet2 = 'KO' or codRet3 = 'KO' then
    			codRetGeneral := 'KO';
    		end if;
    	else
    		codRetGeneral := 'KO';
    	end if;
     
    	RAULPCOM.HORODATE_FIN_LOG('CPT', FicLog);
    	LOG_MESSAGE('CPT', 'CPT code retour = ' || codRetGeneral);
     
    	return codRetGeneral;
     exception
    	 when others then
    		LOG_MESSAGE('CPT', 'CPT code retour = KO');
    		RAULPCOM.HORODATE_FIN_LOG('CPT', FicLog);
    		return 'KO';
     
     end CPT_01;

    Merci pour votre aide et désolé si mes questions peuvent paraître triviale.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 143
    Par défaut
    Tous les appels RAULPCOM.* font référence à un autre package dont il te va falloir récupérer le code pour le comprendre...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Février 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Février 2014
    Messages : 10
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Tous les appels RAULPCOM.* font référence à un autre package dont il te va falloir récupérer le code pour le comprendre...
    Yes merci pour la réponse.
    Mais je n'ai pas bien saisi. Pour la fonction suivante par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    OPEN_LOG(pNomProc IN varchar2, pNomFichier IN varchar2, pDir IN varchar2) RETURN varchar2
     AS
     begin
    	RAULPCOM.OPEN_LOG(pNomProc, pDir, pNomFichier, FicLog);
    	RETURN 'OK';
     exception
    	when others then
    		RETURN 'KO';
     end OPEN_LOG
    ;

    Open_Log est une fonction, non un package non ?
    veux-tu parler de HORODATE_FIN_LOG ?

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 143
    Par défaut
    RAULPCOM.OPEN_LOG appelle la procédure OPEN_LOG déclarée dans le package RAULPCOM.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Février 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Février 2014
    Messages : 10
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    RAULPCOM.OPEN_LOG appelle la procédure OPEN_LOG déclarée dans le package RAULPCOM.
    Oui, je sais. Sur mon premier poste, je met la déclaration d'une procédure et de 2 fonctions contenue dans le package RAULPCOM.

    La revoici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE OR REPLACE package RAULPCPT AS
    		-- 23/04/09 ST CG
    		-- Fichier de log de CPT
    	 FicLog UTL_FILE.FILE_TYPE;
    		-- 23/04/09 ST CG
    		-- Ouverture du fichier de log
    	 FUNCTION  OPEN_LOG(pNomProc IN varchar2, pNomFichier IN varchar2, pDir IN varchar2) RETURN varchar2;
    		-- 23/04/09 ST CG
    		-- Fermeture du fichier de log
                   PROCEDURE LOG_MESSAGE(pNomProc IN varchar2, pMessage IN varchar2);
                                -- Lance les differentes procedures d'alimentation des tables ACCOUNT et ENTITY
                   FUNCTION CPT_01(pPeriode IN varchar2, pCodeEnt IN varchar2) RETURN varchar2;
    Tu t'en doutera , d'autres fonctions sont définis. Ce dont j'ai besoin c'est de m'expliquer celle que j'ai mise en avant, car les autres leurs ressemblent :

    tu remarqueras que OPEN_LOG tout comme CLOSE_LOG sont bien comprises dans le package RAULCPT. Et c'est ce package en question que je dois documenter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    create or replace package body RAULPCPT
    is
    	-- 23/04/09 ST CG
    	-- Ouverture du fichier de log
     FUNCTION  OPEN_LOG(pNomProc in varchar2, pNomFichier in varchar2, pDir in varchar2) return varchar2
     as
     begin
    	RAULPCOM.OPEN_LOG(pNomProc, pDir, pNomFichier, FicLog);
    	return 'OK';
     exception
    	when others then
    		return 'KO';
     end OPEN_LOG;
    	-- 23/04/09 ST CG
    	-- Fermeture du fichier de log
     FUNCTION  CLOSE_LOG(pNomProc in varchar2) return varchar2
     as
     begin
    	RAULPCOM.CLOSE_LOG(pNomProc, FicLog);
    	return 'OK';
     exception
    	when others then
    		return 'KO';
     end CLOSE_LOG;

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 143
    Par défaut
    Citation Envoyé par appaloosa753 Voir le message
    Oui, je sais. Sur mon premier poste, je met la déclaration d'une procédure et de 2 fonctions contenue dans le package RAULPCOM.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE OR REPLACE package RAULPCPT AS...
    Ce n'est pas RAULPCOM dont tu as donné les sources mais RAULPCPT !
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suivre les objets du JDK step by step
    Par icicmoi dans le forum Langage
    Réponses: 3
    Dernier message: 30/12/2010, 10h20
  2. [Aptana] Debug PHP step-by-step
    Par gwinyam dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 29/07/2009, 15h30
  3. [Spring MVC] step-by-step Part 2
    Par Glum147 dans le forum Spring Web
    Réponses: 3
    Dernier message: 13/12/2006, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo