【ODP.NET 日期】 在使用Oracle ODP.NET執行Update時提示ORA-00932 和 ORA-01843

來源:互聯網
上載者:User

標籤:

【問題】

底層資料庫連結由Oracle.Client修改為ODP.NEt串連資料庫,以提高執行效率。

執行語句時發現以下問題

cmd.CommandText = "update SYS_USER  set  LASTLOGIN=:LASTLOGIN, MOBILEPHONE=‘13000000000‘  where USERID=:USERID11";

首先提示 ORA-01843 無效月份,發現ODP.NET 使用OracleDbtype.Date時,Dbparameter.value需要為System.DateTime類型

繼續執行提示ORA-00932 “ORA-00932:資料類型不一致:應為 NUMBER,但卻獲得 DATE”

檢查資料類型完全一致啊

 

 

【分析】

重新寫代碼調試如下

 

OracleCommand cmd = conn.CreateCommand();cmd.CommandText = "update SYS_USER  set  LASTLOGIN=:LASTLOGIN, MOBILEPHONE='13000000000'  where USERID=:USERID11";  OracleParameter p1 = new OracleParameter("LASTLOGIN", OracleDbType.Date);p1.Value = Convert.ToDateTime(DateTime.Now.ToString()) ; cmd.Parameters.Add(p1); OracleParameter p2 = new OracleParameter("USERID11", OracleDbType.Int32);p2.Value = int.Parse("1");            cmd.Parameters.Add(p2);                       int i = cmd.ExecuteNonQuery();

執行成功

 

OracleCommand cmd = conn.CreateCommand();cmd.CommandText = "update SYS_USER  set  LASTLOGIN=:LASTLOGIN, MOBILEPHONE='13000000000'  where USERID=:USERID11"; OracleParameter p2 = new OracleParameter("USERID11", OracleDbType.Int32);p2.Value = int.Parse("1");            cmd.Parameters.Add(p2);                       int i = cmd.ExecuteNonQuery(); OracleParameter p1 = new OracleParameter("LASTLOGIN", OracleDbType.Date);p1.Value = Convert.ToDateTime(DateTime.Now.ToString()) ; cmd.Parameters.Add(p1); 


執行失敗,報錯:ORA-00932:資料類型不一致:應為 NUMBER,但卻獲得 DATE”

 

【結論】

通過搜尋,發現ODP.NET的OracleCommand預設有一個屬性BindByName是false,與Oracle.Client預設是不一樣的。

需要預設啟用 OracleCommand的BindByName

 

【ODP.NET 日期】 在使用Oracle ODP.NET執行Update時提示ORA-00932 和 ORA-01843

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.