Я хочу предоставить права выбора для всех таблиц в базе данных конкретному пользователю в db2 z / OS или мэйнфрейме. Я знаю, что с помощью следующего запроса мы можем предоставить пользователю выбор в таблице, запустив с помощью ibmuser.
GRANT SELECT ON <TableName> TO <UserName>
Однако я пробовал то же самое, используя хранимую процедуру Db2 z / OS в ibmuser:
CREATE PROCEDURE GRANT_SELECT_ON_DB(
IN DatabaseName varchar(255),
IN UserName varchar(255))
LANGUAGE SQL
BEGIN
DECLARE v_NAME VARCHAR(64);
DECLARE v_CREATOR VARCHAR(64);
DECLARE v_GrantQuery VARCHAR(320);
DECLARE c1 CURSOR FOR
(SELECT NAME,CREATOR FROM SYSIBM.SYSTABLES tabs WHERE upper(dBname)=upper(DatabaseName));
OPEN c1;
fetch_loop:
LOOP
FETCH c1 INTO v_NAME,v_CREATOR ;
SET v_GrantQuery = 'grant select on '|| v_CREATOR ||'.'|| v_NAME ||' to '|| UserName;
EXECUTE IMMEDIATE v_GrantQuery;
END LOOP fetch_loop;
CLOSE c1;
END%
При вызове хранимой процедуры она зависает при загрузке и не дает никаких результатов или ошибок. call IBMUSER.GRANT_SELECT_ON_DB('<DatabaseName>','<UserName>')%
Также GRANT SELECT ON <DatabaseName> TO <UserName>
не работает, поскольку он не поддерживается в DB2 z / OS. Пожалуйста, предложите. Может быть, мне не хватает основ.