Bonjour chers tous,
J'aimerais écrire un script de création dynamique d'utilisation. A la suite de la création de l'utilisateur, je dois créer des tables propres à l'utilisateur créé. Malheureusement, je n'arrive pas à créer mon utilisateur depuis une fonction.
voici le code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
CREATE OR REPLACE FUNCTION create_agence(nouveau_schema in varchar2)
RETURN varchar2 IS
sch varchar2(255) :='C##' || nouveau_schema ;
nbrLines number := 0;
BEGIN
SELECT count(*) INTO nbrLines FROM dba_users WHERE username = sch;
IF nbrLines = 0 THEN
---------- Création du Schema ----------
EXECUTE immediate 'create user '|| sch ||' identified by *******';
EXECUTE immediate 'grant create session, connect, resource to '||sch;
COMMIT;
RETURN 'ok';
END IF;
RETURN 'nok';
END; |
Quand je compile le script, je recois un message d'erreur qui est
Erreur(7,5): PL/SQL: SQL Statement ignored
Erreur(7,40): PL/SQL: ORA-00942: Table ou vue inexistante
J'ai essayé d'utiliser
EXECUTE IMMEDIATE 'SELECT username FROM dba_users WHERE username = '||sch||'' INTO nbrLines;
mais j'ai toujours les même code d'erreur. Je me suis essayé avec l'utilisation de curseur sans y arriver.
J'aimerais avoir votre aide pour résoudre ce première problème en vue de poursuivre l'écriture de mon script.
Merci d'avance de votre aide
Partager