- - PR -
Date型パラメータへのNull値の代入
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-02-18 16:55
お世話になります。
SQL Serverのストアドプロシージャへのパラメータの追加の際、 Date型パラメータに「Null」を代入するにはどうすればよいのでしょうか? .Parameters.Add("@年月日", SqlDbType.SmallDateTime).Value = DBNull.Value の場合は「"型 'DBNull' から型 'Integer' へのキャストが有効ではありません。"」 ('Integer' とういうのもしっくりこないのですが・・・。) Dim dateInsertValue as Date = Nothing .Parameters.Add("@年月日", SqlDbType.SmallDateTime).Value = dateInsertValue の場合は「SqlDateTime のオーバーフローです。」となってしまいます。 なるべくなら、ストアドプロシージャ側での変更はしたく無いので弱っています。 宜しくご教示下さいませ。 | ||||
|
投稿日時: 2004-02-18 17:02
.Parameters.Add("@年月日", SqlDbType.Variant ).Value = DBNull.Value
でうまくいきませんか? くわしくはSqlDbType列挙体をヘルプで調べてみてください | ||||
|
投稿日時: 2004-02-18 17:27
ゆうじゅん様
早速の御返答有難う御座いました。 ご教示のとおり、SqlDbType.Variantに変更してみましたが、 「sql_variant データ型から smalldatetime データ型への暗黙的な変換は許可されません。」と、怒られてしまいました。 念のため、Option Strictをオフにしてみましたが駄目でした。 他に方法があれば、宜しくお願いいたします。 | ||||
|
投稿日時: 2004-02-18 18:06
簡単なサンプルを作ってためしてみたのですが確かにSqlDbType.Variantだとエラーが
でました。申し訳ない ただこっちで作ったサンプルでは普通にDBNull.Valueを渡せました。 St_Test @SyoriDate というストアドがある場合
で問題なく動きました Parameters.Addで指定してあるパラメータ名とストアドのパラメータ名は一致してますか? | ||||
|
投稿日時: 2004-02-18 19:06
ゆうじゅん様
わざわざサンプルまで作って検証して頂き、有難う御座いました。 原因の切り分けの為に、他の部分をバッサリ削除してテストして見ました所 こちらでもあっさり動いてしまいました。 「"型 'DBNull' から型 'Integer' へのキャストが有効ではありません。"」 というのは、どうやら他でエラーを拾っていたようです。 ('Integer'と言われた時点で気付くべきでした・・・。) WindowsフォームからXML WEBサービスを経てSQL Serverという構成の為、 デバッグが煩雑で、しっちゃかめっちゃかになっておりました。 お騒がせ致しまして本当に申し訳ありません。 これに懲りませず、又よろしくお願いいたします。 お詫び方々、お礼まで。 |
1