Bonjour,

je suis debutant en PL/SQL et j'aimerais avoir un eclairceissement sur le comportement suivant ... si quelqu'un pouvait m'expliquer le pourquoi ?

Je vous donne un exemple simple qui n'a rien à voir avec mon code mais qui l'illustre bien :

Cas 1 :

voici une partie de mon script shell :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
sqlplus -s /nolog << fin > $LOGORA
whenever sqlerror exit
REM connection à la base
connect $user_oracle/$mdp_oracle@$instance_oracle ;
DECLARE
BEGIN
   EXECUTE IMMEDIATE 'CREATE TABLE test_table
(champ1 char(50),
champ2 char(50))';
END;
/
fin
Je suis connecté avec l'user propriétaire de mon schéma.
resultat : la table "test_table" a été créé


Cas 2 : ( celui qui m'interesserait )

je fais du code précédent une procedure stockée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
CREATE OR REPLACE PROCEDURE proc_create
IS
BEGIN
   EXECUTE IMMEDIATE 'CREATE TABLE test_table
(champ1 char(50),
champ2 char(50))';
END;
/
Resultat lors de l'appel de la procedure dans mon script : la table n'est pas créé et j'obtiens l'exception "ORA-01031: privilèges insuffisants"


Quels sont les droits qu'il me manque ??

Merci