我正在尝试使用以下语法在HDB DATABASE下设置变量。
ALTER DATABASE HDB SET "abc.var1"='aaa';
但是我需要为此提供数据库名称。如果我想改用CURRENT数据库。
PostgreSQL中有一种方法实际上返回当前数据库名称: current_database(),但即使在下面的示例中,也不是有效的方法。
ALTER DATABASE current_database() SET "abc.var1"='aaa';
我该如何实现?
答案 0 :(得分:1)
您需要为此使用动态SQL:
do
$$
begin
execute format('alter database %I SET %I = %L', current_database(), 'abc.var1', 'aaa');
end;
$$
使用参数以及变量名和值的占位符%I
和%L
可以避免在对format()
的调用中嵌套引号,并正确处理引号。