解决方案 -SQL脚本建表产生ORA-00942错误
一、问题简介
1、开发环境
操作系统:win10
数 据 库:Oracle11g
数据库连接工具:Navicat Premium
2、问题简述
在使用SQL Development、Navicat Premium、powerdesigner生成SQL脚本 或 使用Navicat Premium的“数据传输”功能,将旧的数据库复制到Oracle数据库后,再使用select查询语句查询表中记录会出错。

二、问题解决方案
1、原因分析
Oracle数据库的语法是大小写敏感的,通过SQL语句创建表时,会自动将表名转换成大写。但是如果表名或字段名加上""后,Oracle不会将双引号内的表名变成大写。通过数据库连接工具、数据传输功能生成的SQL语句中的表名生成都带有双引号。

在Oracle数据库执行这种语句后,表名就变成了【表名加双引号】的方式。我们可以通过表名加双引号的方式来查询表。
1 select * from "emp"
运行结果如下:

2、更改表名和别名
1 --修改表名
2 --方法一:ALTER TABLE "emp" RENAME TO emp;
3 --方法二:create emp as select * from "emp";
4 --方法三:使用rename方法,但只能修改当前用户下的表
5 rename "emp" to emp;
6 rename "dept" to dept;
7 rename "SALGRADE" to SALGRADE;
8 rename "sysdiagrams" to sysdiagrams;
9
10 --修改字段名
11 alter table dept rename column "deptno" to deptno;
12 alter table dept rename column "dname" to dname;
13 alter table dept rename column "loc" to loc;
14
15 --测试程序
16 select * from emp;
17 select * from dept;
18 select * from SALGRADE;
19 select * from sysdiagrams;
20
21 select * from dept where deptno = 10
3、Navicat Premium解决办法
使用Navicat Premium进行数据传输,把其他数据库中的数据传输到Oracle数据库时,需要在【高级】选项卡中勾选【转换对象名为大写】才可。

4、PowerDesigner解决办法
(1)修改Naming Convention配置
在[Tools->Model Options->Naming Convention]中,把Name和Code的Charcter case属性设成Uppercase(只要不是混合模式即可)。

(2)修改CaseSensitivityUsingQuote配置
在【Database->Edit current database->Script->Sql->Format】下将CaseSensitivityUsingQuote的comment为“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”即可!

解决方案 -SQL脚本建表产生ORA-00942错误的更多相关文章
- [转] 使用SQL脚本查看表空间使用率和使用dba_tablespace_usage_metrics视图的差别
传统的SQL脚本查看表空间使用率,使用的关键视DBA_DATA_FILE和DBA_FREE_SPACE. Oracle 11g引入了DBA_TABLESPACE_USAGE_METRICS视图.其实, ...
- sql语句建表,并且自增加主键
sql语句建表,并且自增加主键 use [test] CREATE TABLE [dbo].[Table_4] ( [userid] [int] IDENTITY(1,1) NOT NULL, CON ...
- SQL脚本修改表结构
SQL脚本修改表结构 新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default ...
- SAE上使用本地sql文件建表时出错解决方法
在SAE上部署网站时需要上传本地的数据库结构,我也导出了本地数据库为sql文件,但是上传到SAE上时遇到了如下错误: MySQL 返回: #1044 - Access denied for user ...
- SQL基础-建表
一.建表 1.创建表的两种方式 *客户端工具 *SQL语句 2.使用SQL语句创建表 表名和字段名不能使用中文:(一般为字母开头,字母.数字.下划线组成的字符串): CREATE TABLE关键字后跟 ...
- SQL 查询建表SQL
1.新建一个查询语句,按执行按钮 2.结果页面会显示一条sql语句,复制该语句即可建表 3.建表测试
- .NET调用osql.exe执行sql脚本创建表和存储过程
using System;using System.Diagnostics;using System.Windows.Forms; namespace WindowsFormsApplication1 ...
- 常用的sql标准建表语句
使用指定数据库 use v4base 建一张表 /*************************************************************************** ...
- 使用SQL语句建表,插入数据
--选中数据库,点击新建查询,然后执行即可--这是SQL中的注释信息,使用两个减号来注释. drop table Book --删除表Book create table Book --创建表Book ...
随机推荐
- 笔记43 Spring Security简介
基于Spittr应用 一.Spring Security简介 Spring Security是为基于Spring的应用程序提供声明式安全保护的安全 性框架.Spring Security提供了完整的安 ...
- mysql 学习之1 mysql在window系统下的安装
转载: https://blog.csdn.net/weixin_43295278/article/details/8287440 此方法只 适用 于window系统 坑 此篇文章在使用 alter ...
- js正则判断实现18位数字
js实现18位数字 var stuCardReg = /^[0-9]{18}/; var stuCard = $('.inp).val();//获取input框中的数值 if (!stuCardReg ...
- C# 类中访问修饰符的优先级与用法(public, internal, protected, private)
首先:类成员的访问级别是以类的访问级别为上限的! 也就是类的访问级别低时,类成员的访问级别高也无法突破类的访问级别 public级别,作用域是这个解决方案() internal级别,作用域是整个装配集 ...
- 【硬盘】RAID卡
独立磁盘冗余阵列,或简称磁盘阵列(Redundant Array of Independent Disks) RAID是一种把多块独立的物理硬盘按不同方式组合起来形成一个逻辑硬盘,一般分为硬RAID卡 ...
- NX二次开发-UFUN高亮显示对象UF_DISP_set_highlight
NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_disp.h> UF_initializ ...
- Vue.js - 路由 vue-router 的使用详解2(参数传递)
一.使用冒号(:)的形式传递参数 1,路由列表的参数设置 (1)路由列表的 path 是可以带参数的,我们在路由配置文件(router/index.js)里以冒号的形式设置参数. (2)下面样例代码中 ...
- Detours的使用准备
Detours是微软开发的一个函数库,可用于捕获系统API.在用其进行程序开发之前,得做一些准备工作: 一.下载Detours 在http://research.microsoft.com/sn/de ...
- Python正则表达式如何进行字符串替换实例
Python正则表达式如何进行字符串替换实例 Python正则表达式在使用中会经常应用到字符串替换的代码.有很多人都不知道如何解决这个问题,下面的代码就告诉你其实这个问题无比的简单,希望你有所收获. ...
- HDU-6441-Find Integer-费马大定理+奇偶数列法则
感觉这样看的比较清楚. 题意: 给出n和a,判断能否求出a^n+b^n=c^n中b和c的值,若可以输出b和c,否则则输出-1 -1. 思路: 数据给的比较大,但是题目很简单,套两个公式:费马打定理和奇 ...