Oracle数据库 “ORA-00942: 表或视图不存在” 问题解决
最近在完成数据库课设项目时需要连接oracle数据库,本人采用的是Navicat Premium,连接过程均正常,实现一个简单的接口并测试时出现报错问题,提示“ORA-00942: 表或视图不存在”:
查询相关资料发现,可能是以下原因:
-
数据库中表本身不存在或者名称出现错误,检查后发现不是此类原因。
-
Oracle中对大小写敏感,在写sql脚本时如果是用
create table 表名
的形式,Oracle数据库会自动将表名转换为大写。
如:
sql create table routes(...)
则最终表名实际上为
ROUTES
。
所以如果想要最终的表名为小写的
routes
,实际上建表时应该像下面这样写:
sql create table "routes"(...)
如果加上了”“,那么我们采用一般的SQL语句查询则会产生“ORA-00942: 表或视图不存在 ”,因此SQL脚本中需要将表名也加上”“。
sql select * from "routes";
如果想要将数据库表名更改为不带双引号的版本,即默认生成全大写的版本,可以用如下的查询语句(反之同理):
ALTER TABLE "routes"
RENAME TO routes;
更新完后表名默认转换为大写:
对于表中的属性可能也会有同样的问题,如果想要统一格式将所有属性的名称修改为全部大写的版本,可以使用如下SQL语句:
DECLARE
stmt VARCHAR2(1000);
BEGIN
FOR col IN (SELECT column_name
FROM user_tab_columns
WHERE table_name = 'ROUTES')