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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Il faut utiliser un execute immediate.

    PS : faut dire "utilisateur créé", pas créer

  3. #3
    Membre averti
    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
    Par défaut
    Ok ben je regarde du coté du execute immédiate , jamais utilisé cet outil

  4. #4
    Membre averti
    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
    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;
    /

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

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    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;
    /

  6. #6
    Membre averti
    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
    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

  7. #7
    Membre expérimenté
    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
    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 Expert 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 : 38
    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
    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;

  9. #9
    Membre expérimenté
    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
    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 ?

  10. #10
    Membre expérimenté
    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
    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

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