Permissions

如何授予對執行包的訪問權限並從表中選擇另一個模式

  • August 4, 2009

我有一個名為 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;

引用自:https://serverfault.com/questions/49910