Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 21/03/2011 11:26:54
- bob45
- Membre
Création utilisateur à partir d'une fonction (avec curseur)
Bonjour à tous,
J'aimerai créer les utilisateurs SQL à partir d'éléments présents dans une table.
Voici la fonction :
create or replace function compte() returns void as $$
DECLARE
nom_curseur CURSOR FOR SELECT nom FROM client ;
login char(10) ;
begin
OPEN nom_curseur ;
FETCH nom_curseur INTO login ;
WHILE FOUND LOOP
RAISE NOTICE '%', login ; -> affiche correctement le nom des utilisateurs
CREATE USER login ; -> génère l'erreur 'QUERY: CREATE USER $1'
FETCH nom_curseur INTO login ;
END LOOP ;
CLOSE nom_curseur ;
end;
$$ language plpgsql ;
Est-il possible de créer un utilisateur de cette façon ?
Merci par avance.
Hors ligne
#2 21/03/2011 11:43:39
- Marc Cousin
- Membre
Re : Création utilisateur à partir d'une fonction (avec curseur)
On ne peut pas utiliser de variable pour autre chose que des colonnes de données. Donc dans un ordre SQL comme CREATE USER, login n'est pas considéré comme une variable, mais comme le nom de l'utilisateur.
On peut s'en sortir avec une requête dynamique :
create or replace function compte() returns void as $$
DECLARE
nom_curseur CURSOR FOR SELECT nom FROM client ;
login char(10) ;
begin
OPEN nom_curseur ;
FETCH nom_curseur INTO login ;
WHILE FOUND LOOP
RAISE NOTICE '%', login ;
EXECUTE 'CREATE USER ' || quote_ident(login) ;
FETCH nom_curseur INTO login ;
END LOOP ;
CLOSE nom_curseur ;
end;
$$ language plpgsql ;
Marc.
Hors ligne
#3 21/03/2011 12:06:37
- bob45
- Membre
Re : Création utilisateur à partir d'une fonction (avec curseur)
en effet, merci.
Hors ligne