How to execute 'set session role' from plpgsql function?

Started by Oleg Vasylenkoover 17 years ago3 messagesgeneral
Jump to latest
#1Oleg Vasylenko
pulp@mail.ru

Hi,everybody!

I wish to have a function with code above, but compiller generate
syntactic error at the line "SET SESSION ROLE wishedrole;".

How to pass the wishedrole value to the structure?

CREATE OR REPLACE FUNCTION f_switch_role(INOUT text,INOUT boolean) AS
$BODY$
DECLARE
wishedrole ALIAS FOR $1;
resetrole ALIAS FOR $2;
BEGIN
if resetrole=true then
RESET ROLE;
RETURN;
end if;

ERROR OCURS AT THE NEXT LINE <<<<<<

SET SESSION ROLE wishedrole;
RETURN;

END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE

#2Dmitry Koterov
dmitry@koterov.ru
In reply to: Oleg Vasylenko (#1)
Re: How to execute 'set session role' from plpgsql function?

Just a suggestion:

EXECUTE 'SET SESSION ROLE wishedrole';

won't help?

2008/8/17 Oleg Vasylenko <pulp@mail.ru>

Show quoted text

Hi,everybody!

I wish to have a function with code above, but compiller generate
syntactic error at the line "SET SESSION ROLE wishedrole;".

How to pass the wishedrole value to the structure?

CREATE OR REPLACE FUNCTION f_switch_role(INOUT text,INOUT boolean) AS
$BODY$
DECLARE
wishedrole ALIAS FOR $1;
resetrole ALIAS FOR $2;
BEGIN
if resetrole=true then
RESET ROLE;
RETURN;
end if;

ERROR OCURS AT THE NEXT LINE <<<<<<

SET SESSION ROLE wishedrole;
RETURN;

END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#3Oleg Vasylenko
pulp@mail.ru
In reply to: Dmitry Koterov (#2)
Re: How to execute 'set session role' from plpgsql function?

Thanks. You suggestion helped me to find a solution!

DECLARE
...
query text;
BEGIN
....
query := query :='SET SESSION ROLE ' || wishedrole;
EXECUTE query;
......