gpt4 book ai didi

oracle - Postgresql 存储过程中基于 session 的全局变量?

转载 作者:行者123 更新时间:2023-11-29 11:16:59 26 4
gpt4 key购买 nike

在 Oracle 的 PL/SQL 中,我可以使用包定义创建一个基于 session 的全局变量。使用 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 实现基于 session 的全局变量?

最佳答案

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

自定义变量类“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') .

关于oracle - Postgresql 存储过程中基于 session 的全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/414541/

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