gpt4 book ai didi

function - 如何在 postgresql 中将变量值或函数参数分配给 custom_variable_class

转载 作者:行者123 更新时间:2023-11-29 12:34:09 25 4
gpt4 key购买 nike

我正在使用一个使用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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com