- - PR -
ストアドプロシージャへのString型パラメータ引渡し
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-02-20 15:06
お世話になってます。
String型のパラメータに下記の様にパラメータを受け渡したところ STRING または BINARY データは切り詰められました。とのエラーメッセージが 表示されました。 Comm1.Parameters.Add(New SqlClient.SqlParameter("@test", _ SqlDbType.VarChar, 16)) Comm1.Parameters("@test").Direction = ParameterDirection.Input ストアドの指定は下記になります ,@test VARCHAR(16) Dim str="000000001" 下記の場合ですとうまくいかないのですが Command.Parameters("@test").Value =str 直接 Command.Parameters("@test").Value =="000000001" にするとうまくいきます バイト数が問題ではない様ですし,,,この場合何が 原因なのか。。。。。想定できる予想を教えて下さい。 ちなみにCommand.Parameters("@test").Value ="'" & str & "'"だと '000000001'がSQLServerにInsertされます。 環境 DB:SQLSERVER2000 vb.net | ||||
|
投稿日時: 2004-02-20 16:10
Mickでございます。
いつもお世話になっております。 Stringの変数に入れる時に 「”」の内側を「’」で括ってみたらどうでしょうか? 直接指定でうまく行くのがちょっと?ですが、 たしかシングルコーテーションの括りが 必要だと思いました。 って、最後に成功されている文字列は括ってあるわけですよねぇ? Dim str="'000000001'" VB.Netの詳細がイマイチ弱い所ではありますが、 型指定はした方がよかったような気がします。 | ||||
|
投稿日時: 2004-02-20 16:49
本当にこの通りに書いているなら、strの型を調べてみてください。Object型になっていませんか?きちんと型指定をしてやると、メッセージはでなくなると思います。 #っつうか、なんで=が2つある? > たしかシングルコーテーションの括りが必要だと思いました。 SQLに直接埋め込む場合は必要ですが、パラメータで渡す場合は不要です。 | ||||
|
投稿日時: 2004-02-20 17:55
Dim str="000000001"
下記の場合ですとうまくいかないのですが すいません。記述ミスです。 Dim str As Stringと定義しています Command.Parameters("@test").Value =str 直接 Command.Parameters("@test").Value =="000000001" すいません 記述ミスです | ||||
|
投稿日時: 2004-02-20 18:03
Stringの変数に入れる時に
「”」の内側を「’」で括ってみたらどうでしょうか? 直接指定でうまく行くのがちょっと?ですが、 たしかシングルコーテーションの括りが 必要だと思いました。 ミッキーさんのおっしゃるとおりの事も実行したのですが'が入ってしまうんです '" & str & "' | ||||
|
投稿日時: 2004-02-20 18:03
CommandをExcuteする直前でCommand.Parameters("@test").Valueの値
はどうなっていますか? | ||||
|
投稿日時: 2004-02-20 19:06
--objSQLCommand.Parameters("@test").Value
|_string 入れた値は"000000010" {String}となってます。 | ||||
|
投稿日時: 2004-02-20 23:56
"000000001"と設定したものが実行する直前で"000000010"に変わっているといことは
設定してから実行するまででなにか悪さをしている処理があるはずです。 値を設定してから実行するまでの処理をステップ実行して Command.Parameters("@test").Valueの値がおかしくなっている場所を特定してみては どうでしょうか |