是否可以在proc中找到SQL查询的结果,例如,我希望自动化某些表的角色。
SELECT DISTINCT 'GRANT SELECT ON '|| TABLE_NAME ||' TO BI_PUBLISHED_ACCESS;'
FROM BI.dd_tables
WHERE PUBLISHED = 'Y';
Output:-
GRANT SELECT ON TABLE1 TO BI_PUBLISHED_ACCESS;
GRANT SELECT ON TABLE2 TO BI_PUBLISHED_ACCESS;
GRANT SELECT ON TABLE3 TO BI_PUBLISHED_ACCESS;
AND SO ON
i然后复制&将输出粘贴回工作表&运行完整的脚本以在我所有已发布的表上授予SELECT到BI_PUBLEND_ACCESS ROLL。
我的过程有效,但这是一个非常手动的操作。我的问题是我可以使用一个查询的输出运行另一个查询吗?
您可以使用EXECUTE IMMEDIATE
语句。
所以,解决方案将看起来像:
BEGIN
for grant_statement in
(SELECT DISTINCT 'GRANT SELECT ON '|| TABLE_NAME ||' TO BI_PUBLISHED_ACCESS;'
FROM BI.dd_tables
WHERE PUBLISHED = 'Y')
LOOP
EXECUTE IMMEDIATE grant_statement;
END LOOP;
END;