IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Procédure création user


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Procédure création user
    Bonjour,

    Pour faciliter la création d'un utilisateur et la distribution de ses droits j'ai décidé de créer une procédure stockée , or celle ci ne veut pas prendre en compte le "CREATE user " et donc ne fonctionne pas.

    Est ce qu'il y a une solution pour contourner ce problème , ou une autre façon de procéder ?

    Code de la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE OR REPLACE PROCEDURE creerCompte(name varchar,mdp varchar )
    IS
    BEGIN 
    		create user name identified by mdp;
    		grant connect to  name;
    		grant resource to name;
    		grant dba to name ;
    		dbms_output.put_line( 'Utilisateur créer') ;
    END;
    /

    L'erreur en question :
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    4/3 PLS-00103: Symbole "CREATE" rencontrÚ Ó la place d'un des
    symboles suivants :
    begin case declare exit for goto if loop mod null pragma
    raise return select update while with <identificateur>
    <identificateur entre guillemets> <variable bind> << close
    current delete fetch lock insert open rollback savepoint set
    sql execute commit forall merge pipe

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Il faut utiliser un execute immediate.

    PS : faut dire "utilisateur créé", pas créer
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Ok ben je regarde du coté du execute immédiate , jamais utilisé cet outil

  4. #4
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    oui en effet, j'ai eu le même pb :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    begin
    EXECUTE IMMEDIATE 'CREATE user name IDENTIFIED BY mdp';
    end

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Voila ce que ca me donne , la procedure compile mais la je doute qu'il fasse attention a mes parametre name et mdp ....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE OR REPLACE PROCEDURE creerCompte(name varchar,mdp varchar )
    IS
    BEGIN 
    		execute immediate 'create user  name identified by mdp ';
    		execute immediate 'grant connect to  name';
    		execute immediate 'grant resource to name';
    		execute immediate 'grant dba to name ';
    		dbms_output.put_line( 'Utilisateur créer') ;
    END;
    /

  6. #6
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE OR REPLACE PROCEDURE creerCompte(name varchar,mdp varchar )
    IS
    BEGIN 
    		execute immediate 'create user '||  name ||' identified by '||mdp;
    		execute immediate 'grant connect to  ' || name;
    		execute immediate 'grant resource to '  || name;
    		execute immediate 'grant dba to ' || name;
    		dbms_output.put_line( 'Utilisateur crée') ;
    END;
    /

  7. #7
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par Hypnoze Voir le message
    Voila ce que ca me donne , la procedure compile mais la je doute qu'il fasse attention a mes parametre name et mdp ....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE OR REPLACE PROCEDURE creerCompte(name varchar,mdp varchar )
    IS
    BEGIN 
    		execute immediate 'create user  name identified by mdp ';
    		execute immediate 'grant connect to  name';
    		execute immediate 'grant resource to name';
    		execute immediate 'grant dba to name ';
    		dbms_output.put_line( 'Utilisateur créer') ;
    END;
    /
    oui en effet.
    tout dépend de ton SGBD

    en ORACLe ça donnerait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE PROCEDURE creerCompte(name varchar,mdp varchar )
    IS
    BEGIN 
    		execute immediate 'create user '||name||' identified by '||mdp;
    END;
    /
    [/QUOTE]

  8. #8
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Une autre solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE IMMEDIATE 'create user :1 identified by :2' USING name, mdp;
    ~ Lola ~

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    A ouais merci j'y avait pas penser

    Par contre il y a une petite erreur au niveau des privilèges pourtant je ne vois pas lesquels j'ai oublié

    ERREUR Ó la ligne 1 :
    ORA-01031: privilÞges insuffisants
    ORA-06512: Ó "SYSTEM.CREERCOMPTE", ligne 4

  10. #10
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par lola06 Voir le message
    Une autre solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE IMMEDIATE 'create user :1 identified by :2' USING name, mdp;
    je connaissais pas ça... Merci ... mais est-ce du SQL normalisé ou alors sur quel SGBD ?

  11. #11
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Tu es sur le forum Oracle donc...

    Sinon je pense que ton User n'a pas les droits de création d'utilisateur d'où le message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GRANT CREATE USER TO &DB_user;

  12. #12
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    J'ai trouvé des exemples dans ce tuto quand je me renseignais sur le SQL dynamique. Je pense que c'est du SQL normalisé. Du coup maintenant je trouve ça plus clair.
    ~ Lola ~

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Je suis sous oracle

    Est ce que c'est le compte avec lequel je suis connecté auquel il manque des droits je ne sais pas , mais ca m’étonnerait : je suis connectée avec le compte "system"

    l'erreur exacte :
    SQL> call creerCompte('test','pass');
    call creerCompte('test','pass')
    *
    ERREUR Ó la ligne 1 :
    ORA-01031: privilÞges insuffisants
    ORA-06512: Ó "SYSTEM.CREERCOMPTE", ligne 4

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    @Scriuiw l'ajout de droit est apparemment passer merci

    Je regarde le tuto

  15. #15
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par lola06 Voir le message
    J'ai trouvé des exemples dans ce tuto quand je me renseignais sur le SQL dynamique. Je pense que c'est du SQL normalisé. Du coup maintenant je trouve ça plus clair.
    Merci pour l'info

Discussions similaires

  1. Création user en script
    Par tom974 dans le forum VBScript
    Réponses: 0
    Dernier message: 24/09/2009, 10h32
  2. Création User Unix pour Oracle
    Par jokos2000 dans le forum Oracle
    Réponses: 4
    Dernier message: 20/07/2009, 10h43
  3. teamspeak+mysql création user+server
    Par splifferwolf dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 06/12/2008, 04h24
  4. [CMC] [BOXI] Probleme création user
    Par Julien59 dans le forum Administration-Migration
    Réponses: 2
    Dernier message: 06/11/2008, 14h49
  5. Problème création user
    Par raskotub dans le forum Administration système
    Réponses: 6
    Dernier message: 13/04/2007, 13h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo