我正在使用一个 pl/pgsql 函数,custom_variable_class
函数代码是
CREATE OR REPLACE FUNCTION can_connect("pUserId" character varying)
RETURNS boolean AS
$BODY$DECLARE
user_id integer ;
BEGIN
SELECT users.user_serial INTO user_id
FROM public.users
WHERE users.user_id="pUserId"
;
set public.userId to user_id ;
set public.companyId to "pUserId" ;
RETURN true ;
EXCEPTION
WHEN OTHERS THEN
raise notice ' error %',sqlerrm ;
END ;
$BODY$
LANGUAGE plpgsql VOLATILE
现在使用该功能
select can_connect ('amr' );
t
没关系,返回值t
符合预期。
但是当试图检索会话变量值时
select current_setting('public.userId') ;
the result is
user_id
使用函数参数时,哪个变量名与值不同
select current_setting('public.pUserId') ;
the result is
pUserId
谢谢你。