当前位置:  开发笔记 > 数据库 > 正文

Postgresql存储过程中基于会话的全局变量?

如何解决《Postgresql存储过程中基于会话的全局变量?》经验,为你挑选了1个好方法。

在Oracle的PL/SQL中,我可以使用包定义创建基于会话的全局变量.使用Postgresql的PLpg/SQL,它似乎不可能,因为没有包,只有独立的程序和功能.

以下是PL/SQL将g_spool_key声明为全局的语法...

CREATE OR REPLACE PACKAGE tox IS
        g_spool_key spool.key%TYPE := NULL;
        TYPE t_spool IS REF CURSOR RETURN spool%ROWTYPE;
        PROCEDURE begin_spool;
        PROCEDURE into_spool
            (
            in_txt IN spool.txt%TYPE
            );
        PROCEDURE reset_spool;
        FUNCTION end_spool
            RETURN t_spool;
        FUNCTION timestamp
            RETURN VARCHAR2;
    END tox;

如何使用PLpg/SQL实现基于会话的全局变量?



1> Patryk Kordy..:

您可以在postgresql.conf中定义一些自定义变量类,并将其用作存储过程中的连接变量.查看文档.

自定义变量类"imos"的用法示例:

imos=> set imos.testvar to 'foobar';
SET
Time: 0.379 ms
imos=> show imos.testvar;
 imos.testvar
--------------
 foobar
(1 row)

Time: 0.333 ms
imos=> set imos.testvar to 'bazbar';
SET
Time: 0.144 ms
imos=> show imos.testvar;
 imos.testvar
--------------
 bazbar
(1 row)

在存储过程中,您可以使用内置函数current_setting('imos.testvar').

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有