sql - 如何在包含可变数组的表上授予 SELECT

标签 sql oracle

我试图让标题为 Head 的角色能够查询标题为 ReportDetails 的表。 ReportDetails 表包含一个名为 ReportEntries_VA 的可变数组。我已经测试了我的数据库,发现即使我在 ReportDetails 上授予了 SELECT,Head 仍然无法访问 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));

然后将权限授予 Head,如下所示:

GRANT SELECT ON ReportDetails TO Head;

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

非常感谢, 祖鲁语

最佳答案

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

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

参见 Managing Oracle Objects .

关于sql - 如何在包含可变数组的表上授予 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9149524/

相关文章:

oracle - 我想转换此日期格式 1970-01-01T00 :00:00-08:00 to only dd/mm/yyyy in oracle. 但是通过使用下面的查询我在转换中遇到错误

database - 刷新复杂的物化 View

mysql - 使用大量内部连接改进查询 wp_postmeta,一个键/值表

mysql - Conditional INNER JOIN or LEFT JOIN 基于连接条件

mysql - 如何从 varchar 字段中提取 ID 并加入另一个表?

java - 使用触发器删除 Oracle 表中的行

sql - oracle plsql中包的备份

java - com.microsoft.sqlserver.jdbc.SQLServerException : MSI Token failure: Failed to acquire token from MSI Endpoint

mysql - Node js不会在mysql表中插入主键

c# - ODAC 12c 第 2 版 (12.1.0.1.2) Xcopy 与 Oracle 11g R2 数据库的兼容性