【发布时间】:2020-09-01 13:30:09
【问题描述】:
我是 Redshift 领域的新手,但不是数据库本身。我正在尝试找出一种以编程方式在我的 redshift 集群中重新颁发授权的方法。很早之前就已经同意,被授予访问模式的用户将根据他们的工作角色和区域拥有 select 或 dml 访问权限。我想做与此类似的事情,但我似乎无法在我的 RS 集群中编译它。集群是 v1.0.18228
CREATE OR REPLACE FUNCTION adminscripts.update_groups(p_schema varchar)
LANGUAGE plpgsql
VOLATILE
AS $function$
DECLARE
v_schema_sel_gro varchar(100) := p_schema||'_sel_group';
v_schema_dml_gro varchar(100) := p_schema||'_dml_group';
v_schema_adm_gro varchar(100) := p_schema||'_adm_group';
v_gro_exists int;
db VARCHAR(100);
endtime datetime;
SQL text;
unload_id INT;
unload_time timestamp;
BEGIN
select count(*) into v_gro_exists
from pg_group where groname = v_schema_sel_gro ;
IF v_gro_exists = 0 THEN
create group v_schema_sel_gro ;
ELSE
RAISE info 'SELECT Group already exits ';
END IF;
GRANT USAGE ON SCHEMA p_schema TO GROUP v_schema_sel_gro;
GRANT SELECT ON ALL TABLES IN SCHEMA p_schema TO GROUP v_schema_sel_gro;
ALTER DEFAULT PRIVILEGES IN SCHEMA p_schema GRANT SELECT ON TABLES TO GROUP v_schema_sel_gro;
END;
$function$
;
任何帮助都会很棒!提前致谢。
杰里米
【问题讨论】:
-
“似乎无法编译”是什么意思?是否有任何特定的错误消息,或出现问题的特定行?
-
当使用 SQLDeveloper/J 时,该过程永远不会编译。我总是得到一个错误并且没有创建过程。
-
这里是错误 [Amazon](500310) 无效操作:在“$$ DECLARE v_schema_sel_gro varchar(100) := p_schema||'_sel_group'”处或附近未终止的美元引号字符串 位置:86 ; [SQL 状态=42601,数据库错误代码=500310]
标签: database amazon-web-services amazon-redshift plpgsql