Bonjour,
J'appelle une fonction test_isn comme suit:
La fonction test_isn appelée est comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 declare toto number; begin toto:= test_isn; end;
La fonction test_isn1 appelée dans la fonction test_isn est comme suit:
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 CREATE OR REPLACE FUNCTION test_isn RETURN NUMBER IS test_exception EXCEPTION; i_retcode NUMBER; v_nb_ligne_lu NUMBER:=0; fichier_tmp_vide EXCEPTION; BEGIN i_retcode:=test_isn1; RETURN 0; EXCEPTION WHEN test_exception THEN dbms_output.put_line('Erreur TEST !!!'); RETURN 1; WHEN fichier_tmp_vide THEN --fichier temporaire vide dbms_output.put_line('Erreur Fichier Vide'); dbms_output.put_line('Erreur :'||SQLERRM); ROLLBACK; RETURN 1; WHEN others -- autre cause de erreur THEN dbms_output.put_line('Autres Erreurs'); dbms_output.put_line('Erreur :'||SQLERRM); ROLLBACK; RETURN 1; END;
Quand j'appelle la fonction test_isn, j'ai le résultat suivant:
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 whenever SQLERROR exit SQL.SQLCODE; CREATE OR REPLACE function test_isn1 RETURN NUMBER IS test_exception EXCEPTION; BEGIN DBMS_OUTPUT.put_line ('Avant create table'); DBMS_OUTPUT.put_line ('create table nows2p0.TEST_ISN_TABLE (toto number(1))'); execute immediate 'create table nows2p0.TEST_ISN_TABLE (toto number(1))'; DBMS_OUTPUT.put_line ('APRES create table'); return 0; EXCEPTION WHEN test_exception THEN dbms_output.put_line('Erreur TEST !!!'); RETURN 1; WHEN OTHERS -- FIN DU TRAITEMENT KO THEN DBMS_OUTPUT.put_line ('Erreur :' || SQLERRM); DBMS_OUTPUT.put_line ( 'Procédure test_isn1 KO le '||TO_CHAR (SYSDATE, 'DD/MM/YYYY HH24:mi')); ROLLBACK; -- RAISE; RETURN 1; END; / EXIT
--> Je ne comprend pas ce pb de privilège, car si j'execute l'ordre de création de table directement sous TOAD, ça fonctionne et la table est belle et bien créée.Avant create table
create table nows2p0.TEST_ISN_TABLE (toto number(1))
Erreur :ORA-01031: privilèges insuffisants
Procédure test_isn1 KO le 11/03/2010 11:40
Help... Merci d'avance pour votre aide.
Partager