Permissions
如何授予對執行包的訪問權限並從表中選擇另一個模式
我有一個名為 SCHEMA1 的模式,其中包含使用者 SCHEMA2 需要訪問的包和表。
我希望 SCHEMA2 能夠訪問執行包並查看原始碼。此外,我想授予對 SCHEMA2 的所有表的 SELECT 訪問權限。
我怎樣才能做到這一點?謝謝你。
我在stackoverflow上回答了一個非常相似的問題。
基本上是這樣的:
BEGIN FOR Rec IN (SELECT object_name, object_type FROM all_objects WHERE owner='SCHEMA1' AND object_type IN ('TABLE','VIEW','PROCEDURE','FUNCTION','PACKAGE')) LOOP IF Rec.object_type IN ('TABLE','VIEW') THEN EXECUTE IMMEDIATE 'GRANT SELECT ON SCHEMA1.'||Rec.object_name||' TO SCHEMA2'; ELSIF Rec.object_type IN ('PROCEDURE','FUNCTION','PACKAGE') THEN EXECUTE IMMEDIATE 'GRANT EXECUTE ON SCHEMA1.'||Rec.object_name||' TO SCHEMA2'; END IF; END LOOP; END;