- PR -

OracleParameter.Valueへ日付の配列

1
投稿者投稿内容
siop
ベテラン
会議室デビュー日: 2003/08/12
投稿数: 67
投稿日時: 2005-02-03 11:03
VB.NET + ODP.NET です。

Date型の配列を引数に持つストアドを実行する際にNullを設定したいと思っています。

DBNull.Value を使おうと思いましたが、VB.NETのDateTime型はDBNull.Valueは代入できません。

ArrayListをOracleParameter.Valueへセットしてみました。
Nullにしたい要素には、DBNull.Valueを指定しています。

すると、ExecuteNonQuery時のエラーとなります。

OracleParameter.Value is invalid

このような場合の対応方法があれば教えてください。
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-02-03 11:33
試していないのですが、DateTime のかわりに SqlDateTime を渡すとどうなりますか?
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2005-02-04 08:01
引用:

DBNull.Value を使おうと思いましたが、VB.NETのDateTime型はDBNull.Valueは代入できません。


SQL Serverの例ですが、これと同じ手法をOracleに適用できませんか。


コード:
Dim sqlStmt As String
Dim conString As String
Dim cn As SqlConnection
Dim cmd As SqlCommand
Dim sqldatenull As SqlDateTime
Try
	sqlStmt = "insert into Emp (FirstName,LastName,Date) Values (@FirstName,@LastName,@Date)  "
	conString = "server=localhost;database=Northwind;uid=sa;pwd=;"
	cn = New SqlConnection(conString)
	cmd = New SqlCommand(sqlStmt, cn)

	cmd.Parameters.Add(New SqlParameter("@FirstName", SqlDbType.NVarChar, 11))
	cmd.Parameters.Add(New SqlParameter("@LastName", SqlDbType.NVarChar, 40))
	cmd.Parameters.Add(New SqlParameter("@Date", SqlDbType.DateTime))

	sqldatenull = SqlDateTime.Null

	cmd.Parameters("@FirstName").Value = txtFirstName.Text
	cmd.Parameters("@LastName").Value = txtLastName.Text
	If (txtDate.Text = "") Then
		cmd.Parameters("@Date").Value = sqldatenull
		'cmd.Parameters("@Date").Value = DBNull.Value
	Else
		cmd.Parameters("@Date").Value = DateTime.Parse(txtDate.Text)
	End If
	cn.Open()
	cmd.ExecuteNonQuery()
	Label1.Text = "Record Inserted Succesfully"

Catch ex As Exception
	Label1.Text = ex.Message
Finally
	cn.Close()
End Try


http://www.c-sharpcorner.com/Code/2003/Sept/EnterNullValuesForDateTime.asp
より引用。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
siop
ベテラン
会議室デビュー日: 2003/08/12
投稿数: 67
投稿日時: 2005-02-17 20:18
引用:

試していないのですが、DateTime のかわりに SqlDateTime を渡すとどうなりますか?


試すのが遅くなってすみません。
SqlDateTime は、やはり SQLServer用でした。

が、Oracle用のもありました。

OracleTimeStamp.Null

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)