Oracle表字段有Oracle关键字出现异常解决方案_oracle

来源:脚本之家  责任编辑:小易  

看下面的例子:SQL> DROP TABLE k; Table dropped -- 建立表e68a843231313335323631343130323136353331333335336537K,字段名为UID(oracle关键字)SQL> CREATE TABLE k(UID INT); CREATE TABLE k(UID INT) ORA-00904: : invalid IDENTIFIER -- 字段名加""表创建成功 SQL> CREATE TABLE k("UID" INT); Table created --插入一些数据SQL> INSERT INTO k VALUES(1); 1 row insertedSQL> INSERT INTO k VALUES(2); 1 row insertedSQL> INSERT INTO k VALUES(3); 1 row inserted -- 查询时加不加""都正常(似乎不太符合规范,UID 可能是比较特殊的关键字???)SQL> SELECT UID FROM k; UID---------- 5 5 5SQL> SELECT "UID" FROM k; UID--------------------------------------- 1 2 3 -- update时必须加上""SQL> UPDATE k SET UID=5 WHERE UID=3; UPDATE k SET UID=5 WHERE UID=3 ORA-01747: invalid user.table.column, table.column, or column specificationSQL> UPDATE k SET "UID"=5 WHERE "UID"=3; 1 row UPDATED 总结:1. oracle可以在"关键字"的形式引用关键字作为字段名与查询语句的别名。如果不是特殊情况最好不要使用,以免引起代码编写过程中的错误。2. 加了""的关键字必须大写。(补充) -- The End --www.zgxue.com防采集请勿采集本网。

一、问题由来

查询该字段,用EXCPTION异常抓取,如果没异常则说明有该字段。 如果进入异常程序块则说明无该字段。 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说O

现在进行项目改造,数据库需要迁移,由原来的使用GBase数据库改为使用Oracle数据库,今天测试人员在测试时后台报了一个异常。

1、在PLSQL里,用sys(oracle系统用户)登陆,登陆的时候要选择SYSDBA。 2、在左边的菜单里找到Users节点,右击选择添加功能。在打开的界面里写上用户名、密码,临时表空间一般选择temp。 3、对象权限无需添加,角色权限选择connect和resource即

把SQL语句单独复制出来进行查询,还是报错,仔细分析原因才知道是表中的字段使用了Oracle中的关键字size。

创建表(Create table)语法详解 1. ORACLE常用的字段类型 ORACLE常用的字段类型有 VARCHAR2 (size) 可变长度的字符串, 必须规定长度 CHAR(size) 固定长度的字符串, 不规定长度默认值为1 NUMBER(p,s) 数字型p是位数总长度, s是小数的长度, 可存负

二、问题分析

使用 explain plan FOR,执行计划,看是否使用了索引进行查询 代码:通过查询执行计划,查看Oracle查询语句是否使用索引

项目中使用的Oracle版本如下:

用sqlserver2000自带的导入导出数据工具,将access表中的数据导入到oracle中去 下面是我在一个人的博客中找到的注意事项,你可以看一看 1.导入的时候access中的表名必须是大写的,否则导进去之后,因为sqlplus运行到后台的时候会把所有字符自动变为

一般来说建表的时候是不会使用关键字的,可是之前的开发人员或者是数据库运维人员可能为了偷懒吧,在那张表中使用四个Oracle中的关键字,

所以导致查询的时候出现异常。

三、解决方案

找到问题的原因后,问题就好解决了。询问了一下开发的同事有没有好的解决办法,有个同事说这种情况可是在查询的列中使用双引号

将需要查询的字段包起来试一下。我立马去尝试,简单查询时确实可行,可是使用分组查询查询后立马报错。下面是查询语句:

所以使用双引号的方案被否定了,因为不管使用或者是不使用双引号将关键字包起来,group by 后面都不能跟Oracle的关键字。除了这个问题外,

在新增数据的时候,也是出现各种问题,按照常规的方式不能正常插入,只能按照如下的方式进行插入,在新增时表后面不跟列名:

衡量利弊后,发现表中字段使用关键字这种方式非常不可取,还是改列名这个方法最靠谱。

1、oracle sql保留的关键字,太多了,2113直接给你在线文档了5261。http://docs.oracle.com/cd/E11882_01/server.112/e41084/ap_keywd001.htm#SQLRF55621文中列举的关键字都4102不可以直接做为表的字段名1653称,需要使用""括上。2、id可以作为表中的字段3、你可以写一段小程序,解析这个文本中的内容。这只是一个小的replace功能,具体使用什么那就看你熟悉什么了。4、hibernate不知道它生成的sql语句是什么样的,如果它足够智能,我觉得它应该会自动屏蔽这种问题,直接在字段或者表上面加“”。如果不行,就只能更改配置文件中的字段名称,上面加上""了内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • oracle用户权限管理使用详解
  • oracle生成动态前缀且自增号码的函数分享
  • oracle的rownum深入解析
  • oracle数据安全面面观
  • oracle数据库如何创建第一张表
  • oracle备份之备份测试脚本的方法(冷备、热备、rman)
  • oracle中创建序列及序列补零实例详解
  • oracle 11g实现安全加固的完整步骤
  • 在linux下安装oracle
  • oracle中的decode的使用介绍
  • Oracle中那些字段不可以作为表中的字段?怎么查询?
  • 怎样将oracle关键字作为字段名
  • oracle中给表添加一个数值类型为double的列,出现...
  • oracle当表内列名为关键字时,怎么查找该列
  • oracle中如何查询某个表中哪些字段含有某个字符?
  • Oracle 11g 中如何授权一张表某个字段的select权限...
  • 创建oracle表,提示字段定义语法错误
  • oracle数据库约200W数据查询非常慢,查询需要10几...
  • 用sqoop将oracle中的表导入sqoop出现如下错误 求解...
  • 【oracle建表时字段使用了关键字】请问这样的咋建...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页使用sql语句查询mysql,sqlserver,oracle所有数据库名和表名,字段名oracle数据库表中字段顺序的修改方法oracle表字段的增删改、表的重命名及主键的增删改oracle删除表、字段之前判断表、字段是否存在oracle获取当前用户表、字段等详细信息sqloracle删除表字段和oracle表增加字段在oracle 数据库查询的select 查询字段中关联其他表的方法oracle用户权限管理使用详解oracle生成动态前缀且自增号码的函数分享oracle的rownum深入解析oracle数据安全面面观oracle数据库如何创建第一张表oracle备份之备份测试脚本的方法(冷备、热备、rman)oracle中创建序列及序列补零实例详解oracle 11g实现安全加固的完整步骤在linux下安装oracleoracle中的decode的使用介绍oracle 查看表空间的大小及使用情linux系统(x64)安装oracle11g完oracle数据库下载及安装图文操作oracle存储过程基本语法介绍oracle 10g 安装教程[图文]oracle 如何查询被锁定表及如何解基于ora-12170 tns 连接超时解决oracle数据库tns配置方法详解oracle中to_date详细用法示例(ororacle 创建表空间详细介绍oracle数据库删除数据delete语句和truncaoracle如何实现like多个值的查询oracle if else语句使用介绍oracle数据库添加或删除一列的sql语句oracle 11gr2中启动scott用户的方法(推荐oracle中scott表结构与简单查询实例分析oracle数据库rownum和row_number的不同点oracle数据库执行脚本常用命令小结oracle 簇的使用详解oracle 查询当天数据的sql条件写法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved