Oracle 获取DBA_用户信息
我正在尝试从DBA_用户检索用户id,就像我们在DBA_角色中所做的那样 我试图从DBA_角色检索ROWID列,但收到以下警告: ORA-01445:无法从没有键保留表的联接视图或示例中选择ROWID 据我所知,DBA_用户是Oracle生成的视图,无法检索此ROWID。我说得对吗 如果这是正确的,我如何知道该视图是从哪些表生成的?或者如何知道用户的ROWID 亲切的问候 萨姆 我正在尝试从DBA_用户检索用户id 您正在寻找: 我试着检索ROWID专栏 在这里没什么事可做。这些是指向行物理存储的指针。在某些特定条件下,它们可能会发生变化。由于视图没有物理存储,因此ROWID对它们来说毫无意义-因此出现错误ORA-01445: 从oraerr: ORA-01445:无法从联接中选择ROWID 不带键保留表的视图 原因:SELECT语句试图从视图中选择行ID 从联接操作派生。因为在视图中选择了行 与基础物理记录不对应,无法创建任何rowid 返回 操作:从视图选择子句中删除ROWID,然后重新执行 声明 我正在尝试从DBA_用户检索用户id 您正在寻找: 我试着检索ROWID专栏 在这里没什么事可做。这些是指向行物理存储的指针。在某些特定条件下,它们可能会发生变化。由于视图没有物理存储,因此ROWID对它们来说毫无意义-因此出现错误ORA-01445: 从oraerr: ORA-01445:无法从联接中选择ROWID 不带键保留表的视图 原因:SELECT语句试图从视图中选择行ID 从联接操作派生。因为在视图中选择了行 与基础物理记录不对应,无法创建任何rowid 返回 操作:从视图选择子句中删除ROWID,然后重新执行 声明Oracle 获取DBA_用户信息,oracle,plsql,database-administration,oracle12c,Oracle,Plsql,Database Administration,Oracle12c,我正在尝试从DBA_用户检索用户id,就像我们在DBA_角色中所做的那样 我试图从DBA_角色检索ROWID列,但收到以下警告: ORA-01445:无法从没有键保留表的联接视图或示例中选择ROWID 据我所知,DBA_用户是Oracle生成的视图,无法检索此ROWID。我说得对吗 如果这是正确的,我如何知道该视图是从哪些表生成的?或者如何知道用户的ROWID 亲切的问候 萨姆 我正在尝试从DBA_用户检索用户id 您正在寻找: 我试着检索ROWID专栏 在这里没什么事可做。这些是指向行物理存储
Sylvain说的是rownum而不是rowid。rownum是一个序列号,而rowid表示行的物理位置 请看这里:
0:opal@spmdtz> select rowid, rownum, xxx.* from xxx;
Rowid |rownum|x |y |
------------------------------------
AAAS/3AAGAAAbmYAAA| 1|foo1|foo2|
AAAS/3AAGAAAbmYAAB| 2|bar1|bar2|
要更新行时,rowid可能很有用。您可以说rowid=。。。或者在其他情况下,您希望引用已有的行。我相信这是进入一排最快的方式
但是我不明白为什么在查询中需要rowid。Sylvain所说的是rownum而不是rowid。rownum是一个序列号,而rowid表示行的物理位置 请看这里:
0:opal@spmdtz> select rowid, rownum, xxx.* from xxx;
Rowid |rownum|x |y |
------------------------------------
AAAS/3AAGAAAbmYAAA| 1|foo1|foo2|
AAAS/3AAGAAAbmYAAB| 2|bar1|bar2|
要更新行时,rowid可能很有用。您可以说rowid=。。。或者在其他情况下,您希望引用已有的行。我相信这是进入一排最快的方式
但是我不明白为什么在查询中需要rowid。DBA\u用户是一个视图,一个由几个表上的查询组成的视图 ORA-01445意味着Oracle无法检索您请求的ROWID,因为您需要直接查询相关表,或者更改视图SQL并同时查询ROWID以获取相关ROWID,不用说,如果您的视图是通过连接两个表创建的,Oracle如何确定您想要哪个ROWID DBA_用户从sys.USER$table中获取数据的主表 要获得ROWID,首先看看DBA_用户背后的SQL,在大多数ide上,了解除了ROWID之外要查询哪些数据非常简单 然后您可以只查询:
select ROWID, USER# user_id, NAME username
from sys.USER$;
或者你需要的任何其他专栏
祝你好运 DBA_USERS是一个视图,该视图由几个表上的查询组成 ORA-01445意味着Oracle无法检索您请求的ROWID,因为您需要直接查询相关表,或者更改视图SQL并同时查询ROWID以获取相关ROWID,不用说,如果您的视图是通过连接两个表创建的,Oracle如何确定您想要哪个ROWID DBA_用户从sys.USER$table中获取数据的主表 要获得ROWID,首先看看DBA_用户背后的SQL,在大多数ide上,了解除了ROWID之外要查询哪些数据非常简单 然后您可以只查询:
select ROWID, USER# user_id, NAME username
from sys.USER$;
或者你需要的任何其他专栏
祝你好运 您正在寻找一个不存在的字段。下面是DBA_用户中可用的字段列表,您正在查找一个不存在的字段。下面是DBA_用户可用的字段列表,感谢您指出我的愚蠢错误。我已经编辑了我的答案来纠正这个错误。谢谢你指出我愚蠢的错误。我编辑了我的答案来纠正这个问题。