Vous n'êtes pas identifié(e).
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
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
en effet, merci.
Hors ligne