首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取DBA_USERS信息

获取DBA_USERS信息
EN

Stack Overflow用户
提问于 2014-09-24 15:47:32
回答 2查看 1.6K关注 0票数 0

我正试图从DBA_USERS中提取一个用户id,就像我们在DBA_ROLES中所做的那样。

我尝试从DBA_ROLES中撤回ROWID列,但我得到了以下警告:

"ORA-01445:无法在没有密钥保存的表的情况下从联接视图或示例中选择ROWID“

据我所理解,DBA_USERS是一个,不可能检索这个ROWID。我说的对吗?

如果这是正确的,我如何知道这个视图是从哪个表生成的?或者我如何知道用户的ROWID?

亲切的问候!

相同的

EN

回答 2

Stack Overflow用户

发布于 2014-09-24 18:35:12

西尔万所说的是rownum,而不是rowid。行是一个序列号,而rowid表示行的物理位置。

见这里:

代码语言:javascript
复制
0:opal@spmdtz> select rowid, rownum, xxx.* from xxx;

Rowid             |rownum|x   |y   |
------------------------------------
AAAS/3AAGAAAbmYAAA|     1|foo1|foo2|
AAAS/3AAGAAAbmYAAB|     2|bar1|bar2|

当您想要更新行时,rowid可能很有用。您可以说是where rowid= ...,或者在其他情况下,您想要引用您已经“拥有”的行。我相信这是进入一行最快的方式。

但我不明白你为什么要在你的查询中用到罗威德。

票数 0
EN

Stack Overflow用户

发布于 2014-12-09 22:00:17

DBA_USERS是一个视图,它由几个表上的查询组成。

ORA-01445意味着Oracle无法检索您请求的ROWID,因为您需要直接查询相关表(或更改视图和查询ROWID )以获得相关的ROWID (不用说,如果您的视图是通过连接几个表创建的-- Oracle如何确定您想要哪个ROWID?)

“主”表DBA_USERS从is sys.USER$表获取数据。

要获得ROWID,首先要查看DBA_USERS后面的SQL (大多数IDE非常简单),以了解除了ROWID之外您想要查询哪些数据。

然后您只需查询:

代码语言:javascript
复制
select ROWID, USER# user_id, NAME username
from sys.USER$;

(或您需要的任何其他列)。

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26021237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档