標籤:
錯誤資訊的彈出框
異常的內容:
“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語句,包括進階的操作文法,如建立規則,事物,挎庫資料轉移,觸發,資料表設計,即時更新資料的觸發與操作。以及典型的即時通訊,並行作業,海量查詢,索引,備份與恢複,安全等內容。
向Oracle中插入記錄時,出現“Oracle.DataAccess.Client.OracleException ORA-00933 ”錯誤