お世話になっております。
ORACLE9iとVB6.0でoo4oで開発しているのですが、
OraDatabase.Parameters("日付").Value = NULL
のように
DATE型のパラメータに対して、NULLを引き渡そうとしていますが、
うまくいかずに困っています。oracle側で
「OIP-00005: 変数は正しい日付型ではありません。」という
エラーが出力されてしまいます。
OraDatabase.Parameters("日付").Value = ""
としても「OIP-00005: 変数は〜」という同じエラーが
出力されてしまいます。
NUMBER型やVARCHAR2型のパラメータに対して
OraDatabase.Parameters("数値").Value = NULL
OraDatabase.Parameters("文字").Value = NULL
or
OraDatabase.Parameters("数値").Value = ""
OraDatabase.Parameters("文字").Value = ""
と記述すると、どちらの方法でもNULLで引き渡すことができるようなのですが、
DATE型では上記の方法は使えません。大変、申し訳ありませんが、
どなたかご存知の方がおられれば、お教え願えないでしょうか?
この文章だと、OraDataBaseの型が分からないのであれですが、
Dim objSession As Object
Dim objDataBase As OraDatabase
Dim objDynaSet As OraDynaset
Dim strBuff As String
Set objSession = CreateObject("OracleInProcServer.XOraSession")
Set objDataBase = objSession.OpenDatabase("ホスト名", "ユーザ名/パスワード", 0&)
Set objDynaSet = objDataBase.CreateDynaset("select * from 表名", 0&)
objDynaSet.DBAddNew
objDynaSet.Fields("日付").Value = Null
objDynaSet.Fields("数値1").Value = ""
objDynaSet.Fields("数値2").Value = Null
objDynaSet.DBUpdate
Set objSession = Nothing
Set objDataBase = Nothing
で私の場合は大丈夫でしたが…
gariさん。今回の質問は、「日付型のフィールド」ではなく、「日付型のパラメータ」みたいですよ。
手元にOracleが無く確認できないので、Oracle系の掲示板(VB系の掲示板ではない)を幾つか覗いてみましたが、確かに、OIP-00005 が発生するという現象が幾つか報告されているようです。
最新のパッチを適用しても駄目なようなら、Oracleのサポートに問い合わせてみては?
それでも駄目なら、Oracle側をVARCHAR2で受け取る仕様にしておき、内部でTO_DATEする事で代用してみるとか…。
ツイート | ![]() |