检查数据库是否匹配并使用PG/PLSQL创建用户



当数据库名称匹配时,下面的脚本运行但不创建用户?我就是不知道我哪里做错了。


DO
$do$
DECLARE
lc_s_db_name CONSTANT VARCHAR(30) := 'dev';
lv_db_name  VARCHAR(100);
BEGIN
select datname into lv_db_name from pg_catalog.pg_database;

IF lv_db_name in (lc_s_db_name )
THEN
create role monitor LOGIN PASSWORD 'monitor';
END IF;
END
$do$;

您的select查询选择一个数据库名称的所有数据库的列表。那并不一定是你要联系的人。

要获取所连接的数据库的名称,使用current_database()

函数
DO
$do$
DECLARE
lc_s_db_names CONSTANT text[] := array['dev', 'dev2'];
BEGIN
IF current_database() = any(lc_s_db_names)
THEN
create role monitor LOGIN PASSWORD 'monitor';
END IF;
END
$do$;