首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在函数中不工作的Postgres会话变量

在函数中不工作的Postgres会话变量
EN

Stack Overflow用户
提问于 2020-09-22 09:28:53
回答 1查看 241关注 0票数 0

我在postgres函数中设置了一个会话变量,并且没有设置值。任何帮助都是非常感谢的。提前谢谢。我使用的是"PostgreSQL 10.6,由Visual C++ build 1800编译,64位“。

我的代码如下:函数:

代码语言:javascript
复制
CREATE FUNCTION set_rp_vals(iv_rp_company varchar, iv_rp_portfolio varchar)
RETURNS integer
LANGUAGE plpgsql
SECURITY DEFINER
AS $function$

DECLARE

l_retval integer;

BEGIN

    l_retval := 1;

    RAISE NOTICE '1.iv_rp_company: >>> %', iv_rp_company;
    RAISE NOTICE '2.iv_rp_portfolio: >>> %', iv_rp_portfolio;

    --set the session variable
    set rp.company   = iv_rp_company;
    set rp.portfolio = iv_rp_portfolio;

    RETURN l_retval;

    EXCEPTION
        WHEN OTHERS THEN
            RETURN 9;
    END;

$function$
;

函数调用:

代码语言:javascript
复制
SELECT set_rp_vals(iv_rp_company := 'COMPAN',iv_rp_portfolio := 'PORTOF');

-检索会议变量:

代码语言:javascript
复制
select 
current_setting('rp.company') as company,
current_setting('rp.portfolio') as portfolio;

上述查询返回的值:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-22 09:46:20

为此,我将使用set_config()函数:

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION set_rp_vals(iv_rp_company varchar, iv_rp_portfolio varchar)
RETURNS integer
LANGUAGE plpgsql
SECURITY DEFINER
AS $function$

DECLARE

l_retval integer;

BEGIN

    l_retval := 1;

    RAISE NOTICE '1.iv_rp_company: >>> %', iv_rp_company;
    RAISE NOTICE '2.iv_rp_portfolio: >>> %', iv_rp_portfolio;

    --set the session variable
    perform set_config('rp.company', iv_rp_company, false);
    perform set_config('rp.portfolio', iv_rp_portfolio, false);

    RETURN l_retval;

    EXCEPTION
        WHEN OTHERS THEN
            RETURN 9;
    END;

$function$
;
CREATE FUNCTION

用您的值执行:

代码语言:javascript
复制
SELECT set_rp_vals(iv_rp_company := 'COMPAN',iv_rp_portfolio := 'PORTOF');            

NOTICE:  1.iv_rp_company: >>> COMPAN
NOTICE:  2.iv_rp_portfolio: >>> PORTOF
┌─────────────┐
│ set_rp_vals │
├─────────────┤
│           1 │
└─────────────┘
(1 row)

select                                                                                
current_setting('rp.company') as company,
current_setting('rp.portfolio') as portfolio;

┌─────────┬───────────┐
│ company │ portfolio │
├─────────┼───────────┤
│ COMPAN  │ PORTOF    │
└─────────┴───────────┘
(1 row)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64006871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档