Précédent   Forum du club des développeurs et IT Pro > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/12/2012, 14h36   #1
Furr
Membre habitué
 
Avatar de Furr
 
Développeur informatique
Inscription : avril 2009
Messages : 153
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2009
Messages : 153
Points : 137
Points : 137
Par défaut Déclarations & Source

Bonjour,

Je requiers votre aide afin de mener à bien une requête.

Je travaille sur un PL/SQL simple, pour lequel je n'arrive pas à récupérer le code source.

Je m'explique :

J'ai deux scripts PL/SQL définissant un seul et même package, le premier étant sa déclaration, le second son code source (ou BODY), et je cherche la requête qui va me permettre de récupérer ce même code source.

Voici les déclarations :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE OR REPLACE
PACKAGE emp_mgmt AS 
FUNCTION hire (last_name VARCHAR2, job_id VARCHAR2, 
   manager_id NUMBER, salary NUMBER, 
   commission_pct NUMBER, department_id NUMBER) 
   RETURN NUMBER; 
FUNCTION create_dept(department_id NUMBER, location_id NUMBER) 
   RETURN NUMBER; 
PROCEDURE remove_emp(employee_id NUMBER); 
PROCEDURE remove_dept(department_id NUMBER); 
PROCEDURE increase_sal(employee_id NUMBER, salary_incr NUMBER); 
PROCEDURE increase_comm(employee_id NUMBER, comm_incr NUMBER); 
no_comm EXCEPTION; 
no_sal EXCEPTION; 
END emp_mgmt;
Et le BODY :

Code :
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
CREATE OR REPLACE PACKAGE BODY emp_mgmt AS 
tot_emps NUMBER; 
tot_depts NUMBER; 
FUNCTION hire 
(last_name VARCHAR2, job_id VARCHAR2, 
 manager_id NUMBER, salary NUMBER, 
 commission_pct NUMBER, department_id NUMBER) 
RETURN NUMBER IS new_empno NUMBER; 
BEGIN 
SELECT IDENTIFIANT.NEXTVAL
   INTO new_empno 
   FROM DUAL; 
INSERT INTO T_DST_TRA 
   VALUES (new_empno, '1', '1'); 
   tot_emps := tot_emps + 1; 
RETURN(new_empno); 
END; 
FUNCTION create_dept(department_id NUMBER, location_id NUMBER) 
RETURN NUMBER IS 
   new_deptno NUMBER; 
BEGIN 
   SELECT IDENTIFIANT.NEXTVAL
      INTO new_deptno 
      FROM dual; 
   INSERT INTO T_DST_TRA 
      VALUES (new_deptno, '2', '1'); 
   tot_depts := tot_depts + 1; 
   RETURN(new_deptno); 
END; 
PROCEDURE remove_emp (employee_id NUMBER) IS 
BEGIN 
   DELETE FROM T_DST_TRA 
   WHERE T_DST_TRA.IDE_DST = remove_emp.employee_id; 
   tot_emps := tot_emps - 1; 
END; 
PROCEDURE remove_dept(department_id NUMBER) IS 
BEGIN 
   DELETE FROM T_DST_TRA 
   WHERE T_DST_TRA.IDE_DST = remove_dept.department_id; 
   tot_depts := tot_depts - 1; 
   SELECT COUNT(*) INTO tot_emps FROM T_DST_TRA; 
END; 
PROCEDURE increase_sal(employee_id NUMBER, salary_incr NUMBER) IS 
curr_sal NUMBER; 
BEGIN 
   SELECT IDE_DST INTO curr_sal FROM T_DST_TRA
   WHERE T_DST_TRA.IDE_DST = increase_sal.employee_id; 
   IF curr_sal IS NULL 
      THEN RAISE no_sal; 
   ELSE 
      UPDATE T_DST_TRA 
      SET IDE_DST = employee_id 
      WHERE employee_id = employee_id; 
   END IF; 
END; 
PROCEDURE increase_comm(employee_id NUMBER, comm_incr NUMBER) IS 
curr_comm NUMBER; 
BEGIN 
   SELECT IDE_DST
   INTO curr_comm 
   FROM T_DST_TRA 
   WHERE T_DST_TRA.IDE_DST = increase_comm.employee_id; 
   IF curr_comm IS NULL 
      THEN RAISE no_comm; 
   ELSE 
      UPDATE T_DST_TRA 
      SET IDE_DST = comm_incr; 
   END IF; 
END; 
END emp_mgmt;
J'ai actuellement la requête qui me retourne les déclarations, en revanche je n'arrive pas à en récupérer les sources :

Code SQL :
SELECT TEXT FROM SYS.ALL_SOURCE WHERE TYPE = 'PACKAGE' AND NAME = 'EMP_MGMT' ORDER BY LINE

Pourriez-vous m'aider pour trouver comment récupérer le source ?
En espérant avoir été assez clair...

Merci
Furr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2012, 14h46   #2
Furr
Membre habitué
 
Avatar de Furr
 
Développeur informatique
Inscription : avril 2009
Messages : 153
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2009
Messages : 153
Points : 137
Points : 137
Bon très bien.... Je me suis rendu compte de mon erreur tout seul...

Ma requête était la bonne, mis à part le type sur lequel je filtrais ma requête... Il fallait que je le fasse sur PACKAGE BODY et non PACKAGE

Résultat, voici la requête que je cherchais :

Code :
SELECT TEXT FROM ALL_SOURCE WHERE TYPE='PACKAGE BODY' AND NAME='EMP_MGMT' ORDER BY LINE
Merci à ceux qui auraient eu le temps de me lire
Furr est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h06.


 
 
 
 
Partenaires

Hébergement Web