【发布时间】:2017-12-29 11:38:26
【问题描述】:
Oracle 在对象表上授予选择时遇到问题。
当创建表时像
create table t (name char, ...)
那么我可以毫无问题地将任何权限授予任何用户。
但是当表是从一个对象创建时,即
create or replace
type type_client under type_personne (
num int ,
username varchar(30),
balance int,
ta table_achat,
ref_admin ref type_admin,
member function get_prix_achat_total return int
);
create table t of type_client
例如,我尝试将其选择给user1,但是当我从user1 连接并尝试从该表中选择任何数据时:
select * from system.table_client
我看到了消息:
ORA-00904: : 无效标识符
00904. 00000 - “%s:无效标识符”
*原因:
*行动:
行错误:1 列:34
有时我会看到消息:
内部错误:未知或未实现的访问器类型:9
【问题讨论】:
-
当你说“它不起作用”时,你的意思是什么?您是否收到错误消息,如果是,是什么?
-
当我尝试从表中选择一些数据时,看到消息:ORA-00904: : invalid identifier 00904. 00000 - "%s: invalid identifier" *原因:*操作:行错误: 1 列:34
-
@user9152856 - 请edit your question 显示
person对象的定义、您正在运行的实际查询以及您遇到的错误。听起来您引用对象字段不正确,而不是权限问题。 -
不直接相关,但您不应该将自己的对象创建为系统或任何内置帐户。为您的对象创建一个单独的用户/模式。
-
@user9152856 - 只是好奇,您使用的是哪个版本的 Oracle? (如果您不确定,
select * from v$version会告诉您)
标签: oracle