作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用一个使用custom_variable_class
的pl/pgsql函数,函数代码是
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
。
但是当试图检索 session 变量值时
select current_setting('public.userId') ;
the result is
user_id
哪个是变量名不是值使用函数参数时也是一样
select current_setting('public.pUserId') ;
the result is
pUserId
谢谢。
最佳答案
使用 plpgsql EXECUTE强制解析器插入变量的值:
EXECUTE 'set public.userId to ' || quote_literal(user_id);
EXECUTE 'set public.companyId to ' || quote_literal( "pUserId");
作为奖励,它还可以与旧版本的 PostgreSQL 一起使用。
关于function - 如何在 postgresql 中将变量值或函数参数分配给 custom_variable_class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10480797/
我是一名优秀的程序员,十分优秀!