Je cherche un moyen de créer une fonction qui accepte deux paramètres pour le nom d'utilisateur et le mot de passe et crée un rôle en lecture seule avec lui. J'ai essayé quelque chose comme:Créer un rôle par programmation avec les paramètres
create or replace function create_user_readonly (
unm varchar,
pwd varchar
)
returns varchar(10) as $$
begin
create role unm login password @pwd;
return 'success';
end;
$$ language plpgsql;
Cela jette l'erreur:
[42601] ERROR: syntax error at or near "@" Position: 151
Je pensais d'utiliser SQL dynamique pour construire la requête, mais couru dans ce ici (https://www.postgresql.org/docs/9.1/static/plpgsql-statements.html):
Another restriction on parameter symbols is that they only work in SELECT, INSERT, UPDATE, and DELETE commands. In other statement types (generically called utility statements), you must insert values textually even if they are just data values.
Merci Vao, ça a marché! Votre nom devrait être Wow :) Est-ce que le '' 'transaction_read_only''' n'est pas quelque chose qui peut être fait dans la même instruction que' '' create role'''? – Anand
pas vraiment, au moins je n'ai jamais essayé et il n'est pas documenté :) –
mis à jour avec votre note et ajouté plusieurs mines comme nota bene –