から書類を作成:は、このテーブルを考えると.net4
myTable
EMPID NOT NULL CHAR(10)
DEFFECTIVE NOT NULL DATE
SSCHEME CHAR(10)
と、この準備された文:これらのパラメータを持つ
update myTable set sScheme = :sScheme
where empID = :sEmpID
and dEffective= :dStart
:
OCmd.Parameters.Add("sEmpID", OracleDbType.Char).Value = sEmp_No 'string
OCmd.Parameters.Add("dStart", OracleDbType.Date).Value = dtStart 'System.DateTime
OCmd.Parameters.Add("sScheme", OracleDbType.Char).Value = sScheme 'string
私は続けるのはなぜORA-01858:数字ではない数字の文字が見つかりました。
フォーマットされた文字列として日付を渡してから、クエリでto_dateを実行することを提案している人がたくさんいますが、それはひどく後退しているようです。
(OracleGlobalizationの)SetSessionInfoを使用して、Cultureで指定されたDateFormatと一致させようとしましたが、役に立たなかったことがあります。
最初はこのアプリケーションは問題なしでMSのオラクルプロバイダを使用して.net2を実行していましたが、.net4とOracle.DataAccessに移動するとこの頭痛を引き起こします。 http://docs.oracle.com/html/E15167_01/featTypes.htmが
の.NET Framework 4 Oracle.DataAccess(v4.112.3.0)
実際に問題は日付形式ではなく、適用されていた順序に従ってパラメータをバインドしていたことでした。 BindByName = Trueに変更され、すべて正常に機能しました:) – lidbanger