向Oracle中插入记录时,出现“Oracle.DataAccess.Client.OracleException ORA-00933 ”错误

简介:

错误信息的弹出框

异常的内容:

“Oracle.DataAccess.Client.OracleException”类型的未经处理的异常在 DBFSR.dll 中发生   其他信息: External component has thrown an exception.

捕获的异常信息:

Oracle.DataAccess.Client.OracleException ORA-00933: SQL 命令未正确结束    at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx*

 

解决方案

本人的Oracle语句为

            StringBuilder strSql = new StringBuilder();
            strSql.Append("insert into HP_TABLE(");
            strSql.Append("TS_ID,DATE_SOLAR,DATE_LUNAR,HP_FID,HOUR_00,"+
                "HOUR_01,HOUR_02,HOUR_03,HOUR_04,HOUR_05,HOUR_06,HOUR_07,HOUR_08,HOUR_09,HOUR_10,"+
                "HOUR_11,HOUR_12,HOUR_13,HOUR_14,HOUR_15,HOUR_16,HOUR_17,HOUR_18,HOUR_19,HOUR_20,"+
                "HOUR_21,HOUR_22,HOUR_23,\"SUM\",\"AVG\",G1_T,G1_L,G2_T,G2_L,D1_T,D1_L,D2_T,D2_L,UPDATE_TIME,DETAILS)");
            strSql.Append(" values (");
            strSql.Append(":TS_ID,:DATE_SOLAR,:DATE_LUNAR,:HP_FID,:HOUR_00,"+
                ":HOUR_01,:HOUR_02,:HOUR_03,:HOUR_04,:HOUR_05,:HOUR_06,:HOUR_07,:HOUR_08,:HOUR_09,:HOUR_10," +
                ":HOUR_11,:HOUR_12,:HOUR_13,:HOUR_14,:HOUR_15,:HOUR_16,:HOUR_17,:HOUR_18,:HOUR_19,:HOUR_20," +
                ":HOUR_21,:HOUR_22,:HOUR_23,:\"SUM\",:AVG,:G1_T,:G1_L,:G2_T,:G2_L,:D1_T,:D1_L,:D2_T,:D2_L,:UPDATE_TIME,:DETAILS)");
经检查,发现是关键字冲突,在上面“AVG”关键字与系统的函数冲突,只将上面的AVG加上引号还不够,还要将下面的AVG参数名加上引号。

PS,其实经过作者测试,SUM的参数名可以不加引号。

  ...

  ":HOUR_21,:HOUR_22,:HOUR_23,:\"SUM\",:\"AVG\",:G1_T,:G1_L,:G2_T,:G2_L,:D1_T,:D1_L,:D2_T,:D2_L,:UPDATE_TIME,:DETAILS)"); 

  ...

这样即可解决问题。进行正常的插入操作。

 

 

经验:

(1)对于较长的sql语句,最好将其粘贴到Word中进行分段识别,否则很难保证正确。

(2)一般写作的SQL语句,可以现在如PL/SQL中进行测试正确与否。

(3)平时要多SQL语句,包括高级的操作语法,如建立规则,事物,挎库数据转移,触发,数据表设计,实时更新数据的触发与操作。以及典型的即时通讯,并发操作,海量查询,索引,备份与恢复,安全等内容。

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。



    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5957282.html ,如需转载请自行联系原作者

相关文章
|
SQL 存储 Oracle
oracle错误代码大全(超详细)
本篇文章是对oracle错误代码进行了详细的总结与分析,需要的朋友参考下
1664 0
|
SQL Oracle 关系型数据库
解决Oracle的状态: 失败 -测试失败: IO 错误: The Network Adapter could not establish the connection
解决Oracle的状态: 失败 -测试失败: IO 错误: The Network Adapter could not establish the connection
2076 0
解决Oracle的状态: 失败 -测试失败: IO 错误: The Network Adapter could not establish the connection
|
SQL Oracle 关系型数据库
【数据库】解决 oracle: SQL 错误 [900] [42000]: ORA-00900: 无效 SQL 语句
【数据库】解决 oracle: SQL 错误 [900] [42000]: ORA-00900: 无效 SQL 语句
2328 0
【数据库】解决 oracle: SQL 错误 [900] [42000]: ORA-00900: 无效 SQL 语句
|
存储 Oracle 关系型数据库
常见Oracle错误都在这了: ORA-00257/ORA-00313/ORA-28000/ORA-28000
常见Oracle错误都在这了: ORA-00257/ORA-00313/ORA-28000/ORA-28000
常见Oracle错误都在这了: ORA-00257/ORA-00313/ORA-28000/ORA-28000
|
Oracle 安全 关系型数据库
出现身份验证错误,要求的函数不受支持(这可能是由于CredSSP加密Oracle修正)
出现身份验证错误,要求的函数不受支持(这可能是由于CredSSP加密Oracle修正)
|
运维 Oracle 关系型数据库
Oracle运维笔记之有关外部表的ORA-20011错误
Oracle运维笔记之有关外部表的ORA-20011错误
1063 0
Oracle运维笔记之有关外部表的ORA-20011错误
|
Oracle 关系型数据库
Oracle常见错误
Oracle常见错误错误: ORA-28040--No matching authentication protocol 原因:客户端版本与服务器端版本不一致导致,比如客户端是11g,而服务器端是12c 解决:最根本的解决办法是安装与服务器端版本一致的客户端    网上也有其他的办法,如修改sqlnet.
4956 0
|
Oracle 关系型数据库 数据安全/隐私保护
远程桌面连接出现身份验证错误。 要求的函数不受支持,这可能是由于 CredSSP 加密 Oracle 修正。
远程桌面连接出现身份验证错误。 要求的函数不受支持,这可能是由于 CredSSP 加密 Oracle 修正。 查看解决方案
2049 0