- PR -

ストアドプロシージャへのString型パラメータ引渡し

投稿者投稿内容
いっく☆
常連さん
会議室デビュー日: 2003/11/26
投稿数: 35
投稿日時: 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





Micky
大ベテラン
会議室デビュー日: 2002/09/04
投稿数: 137
投稿日時: 2004-02-20 16:10
Mickでございます。
いつもお世話になっております。

Stringの変数に入れる時に
「”」の内側を「’」で括ってみたらどうでしょうか?
直接指定でうまく行くのがちょっと?ですが、
たしかシングルコーテーションの括りが
必要だと思いました。

って、最後に成功されている文字列は括ってあるわけですよねぇ?

Dim str="'000000001'"

VB.Netの詳細がイマイチ弱い所ではありますが、
型指定はした方がよかったような気がします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-20 16:49
引用:

いっく☆さんの書き込み (2004-02-20 15:06) より:

,@test VARCHAR(16)
Dim str="000000001"
下記の場合ですとうまくいかないのですが
Command.Parameters("@test").Value =str
直接
Command.Parameters("@test").Value =="000000001"
にするとうまくいきます


 本当にこの通りに書いているなら、strの型を調べてみてください。Object型になっていませんか?きちんと型指定をしてやると、メッセージはでなくなると思います。
#っつうか、なんで=が2つある?


> たしかシングルコーテーションの括りが必要だと思いました。
 SQLに直接埋め込む場合は必要ですが、パラメータで渡す場合は不要です。
いっく☆
常連さん
会議室デビュー日: 2003/11/26
投稿数: 35
投稿日時: 2004-02-20 17:55
Dim str="000000001"
下記の場合ですとうまくいかないのですが
すいません。記述ミスです。
Dim str As Stringと定義しています

Command.Parameters("@test").Value =str
直接
Command.Parameters("@test").Value =="000000001"
すいません
記述ミスです
いっく☆
常連さん
会議室デビュー日: 2003/11/26
投稿数: 35
投稿日時: 2004-02-20 18:03
Stringの変数に入れる時に
「”」の内側を「’」で括ってみたらどうでしょうか?
直接指定でうまく行くのがちょっと?ですが、
たしかシングルコーテーションの括りが
必要だと思いました。

ミッキーさんのおっしゃるとおりの事も実行したのですが'が入ってしまうんです
'" & str & "'
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-02-20 18:03
CommandをExcuteする直前でCommand.Parameters("@test").Valueの値
はどうなっていますか?


いっく☆
常連さん
会議室デビュー日: 2003/11/26
投稿数: 35
投稿日時: 2004-02-20 19:06
--objSQLCommand.Parameters("@test").Value
|_string

入れた値は"000000010" {String}となってます。
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-02-20 23:56
"000000001"と設定したものが実行する直前で"000000010"に変わっているといことは
設定してから実行するまででなにか悪さをしている処理があるはずです。

値を設定してから実行するまでの処理をステップ実行して
Command.Parameters("@test").Valueの値がおかしくなっている場所を特定してみては
どうでしょうか

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