是否可以在存储过程中向用户授予角色?
Is it possible to Grant Roles to Users in a Stored Procedure?
我正在研究 DB2 数据仓库。我正在尝试编写一个涉及向输入用户授予角色的存储过程。
CREATE OR REPLACE MYSCHEMA.PROCEDURE SP_CHECKIN_USER (
IN userid varchar(9),
IN groupid varchar(10)
) LANGUAGE SQL
BEGIN
-- do some work here
GRANT ROLE groupid TO USER userid;
END
当我尝试 运行 时,出现错误:
"GROUPID" is undefined name .. SQLCODE=-204, SQLSTATE=42704, DRIVER=...
Run of routine failed.
是的,如果您在存储过程中对 grant role
使用动态 SQL 是可能的。
例如:
declare v_sql varchar(1024);
set v_sql = 'grant role '||trim(p_groupid)||' to user '||trim(p_userid)||' ';
execute immediate v_sql;
请记住,所有其他规则仍然适用,角色必须预先存在,用户必须预先存在,authid 必须具有所有相关权限等。
我正在研究 DB2 数据仓库。我正在尝试编写一个涉及向输入用户授予角色的存储过程。
CREATE OR REPLACE MYSCHEMA.PROCEDURE SP_CHECKIN_USER (
IN userid varchar(9),
IN groupid varchar(10)
) LANGUAGE SQL
BEGIN
-- do some work here
GRANT ROLE groupid TO USER userid;
END
当我尝试 运行 时,出现错误:
"GROUPID" is undefined name .. SQLCODE=-204, SQLSTATE=42704, DRIVER=...
Run of routine failed.
是的,如果您在存储过程中对 grant role
使用动态 SQL 是可能的。
例如:
declare v_sql varchar(1024);
set v_sql = 'grant role '||trim(p_groupid)||' to user '||trim(p_userid)||' ';
execute immediate v_sql;
请记住,所有其他规则仍然适用,角色必须预先存在,用户必须预先存在,authid 必须具有所有相关权限等。