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

错误信息的弹出框

向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,如需转载请自行联系原作者

上一篇:通过注册表开启“终端服务”


下一篇:【VS调试】C#读写Windows 7注册表时抛出“不允许所请求的注册表访问权”的解决办法