在SQL*Plus里面已经显示创建表成功了,可是后面为啥又说表不存在呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL*Plus里面已经显示创建表成功了,可是后面为啥又说表不存在呢?相关的知识,希望对你有一定的参考价值。

你创建表的时候shi

CREATE TABLE UserManAdmin.Users ...

也就是这个 Users 表, 是被创建在 UserManAdmin 下面了。

那个 LoginInfo 的, 也是一样。

我不知道你当前这个登录用户, 是不是 UserManAdmin

你可以在创建表以后

DESC Users
DESC LoginInfo

来看看 这两个表的 表结构。

如果报错, 提示表不存在的话, 那么可能是你当前的登录用户名, 不是 UserManAdmin 的缘故了。

你可以在 后面的查询语句那里

FROM UserManAdmin.Users u INNER JOIN UserManAdmin.LoginInfo l ...

来指定, 是UserManAdmin 下面的表, 而不是当前用户的表。追问

可是课本要求实现连接查询,以SYSTEM用户登录,然后执行这段代码。

追答

我已经把出现问题的原因告诉你了。

你现在是想怎么样呢?

是 把
CREATE TABLE UserManAdmin.Users .
修改 为
CREATE TABLE Users .



还是 把
FROM Users u INNER JOIN LoginInfo l

修改为
FROM UserManAdmin.Users u INNER JOIN UserManAdmin.LoginInfo l



还是 想 不修改上面的语句?
不修改语句的话, 你可以创建 同义词

CREATE SYNONYM Users FOR UserManAdmin.Users;
CREATE SYNONYM LoginInfo FOR UserManAdmin.LoginInfo;

如果你什么语句也不想改, 同义词也不想创建, 那我就没办法了。

追问

可以了。。谢谢指点~!

参考技术A 出现错误的原因是创建User和LoginInfo这两个表的账号是UserManAdmin,而在下面进行查询的时候,登陆账号并不是UserManAdmin,如果没有创建同义词或者,表名前没有加上 创建者的前缀就会报"表或视图不存在"的错误,解决办法有2种:
1,创建同义词:CREATE SYNONYM Users FOR UserManAdmin.Users;
CREATE SYNONYM LoginInfo FOR UserManAdmin.LoginInfo;
2,查询时带上 创建者 前缀:FROM UserManAdmin.Users u INNER JOIN UserManAdmin.LoginInfo l ...
参考技术B 加一个用户名,比如scott.LoginInfo
试试看

以上是关于在SQL*Plus里面已经显示创建表成功了,可是后面为啥又说表不存在呢?的主要内容,如果未能解决你的问题,请参考以下文章

navicat for oracle 连接oracle 数据库,通过sql plus 能连接上数据库 ,可是通过navicat 就是连不上

用sql server 建了一个表,可是查询此表时怎莫说不存在呢?

使用 .sql 文件和 SQL*Plus 报告 SQL 语句成功/失败

我安装了SQL,可是为啥找不到软件?

在 SQL PLUS ORACLE 11gr1 上使用 DATABASE 命令

ORACLE 触发器里面执行建表语句不成功,求解!!!