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.