Dar*_*roo 1 postgresql postgresql-10
我有一个 PostgreSQL 10 脚本,我想在开始时为其声明一次变量,然后在整个脚本中使用它们(带有可能的事务)。
我知道我可以做到:
DO $$
DECLARE test float := 0.1 ;
BEGIN
< do whatever here>
END $$
Run Code Online (Sandbox Code Playgroud)
但这使我每次有 BEGIN / END 块时都声明变量。
Postgres本身没有全局变量。但我们有“定制选项”,可以为此目的进行拉伸。
SET myvars.test TO '0.1';
Run Code Online (Sandbox Code Playgroud)
在会话期间持续存在(不仅仅是事务)。与:
SELECT current_setting('myvars.test')::float;
Run Code Online (Sandbox Code Playgroud)
请注意,值存储为text
. 因此,您可能需要按演示进行转换。
为了避免在引用未设置变量时出现异常并NULL
改为获取:
SELECT current_setting('myvars.test', true)::float;
Run Code Online (Sandbox Code Playgroud)
看:
还有许多其他解决方法: