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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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