我有一个名为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;