使用SQL查询的结果在第二个SQL查询中运行



是否可以在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;

最新更新