我试图允许标题为的角色能够查询标题为 ReportDetails 的表。表格 ReportDetails 包含一个名为 ReportEntries_VA 的可变数组。我已经对数据库进行了测试,发现即使我已在 ReportDetails 上授予SELECT权限,但仍然无法访问 ReportEntries_VA

代码如下:

CREATE TYPE ReportEntries_Type AS OBJECT
(Subject VARCHAR (500));
/

CREATE OR REPLACE TYPE ReportEntries_VA AS
VARRAY (12) OF ReportEntries_Type;
/

CREATE TABLE ReportDetails
(ReportID INTEGER NOT NULL UNIQUE,
StudentID INTEGER NOT NULL UNIQUE,
ReportEntries ReportEntries_VA,
DateLastModified DATE NOT NULL,
CONSTRAINT ReportDetails_PK PRIMARY KEY (ReportID, StudentID),
CONSTRAINT RDStudentIDSD FOREIGN KEY (StudentID)
REFERENCES StudentDetails (StudentID));

然后,将特权授予,如下所示:
GRANT SELECT ON ReportDetails TO Head;

我将如何允许访问变化的数组(以及在它之前创建的对象?)的任何建议将不胜感激。

非常感谢,
祖鲁族

最佳答案

您需要授予EXECUTE角色所有类型的Head特权。

GRANT EXECUTE ON ReportEntries_Type to Head;
GRANT EXECUTE ON ReportEntries_VA   to Head;

参见Managing Oracle Objects

08-26 19:23