トップ回答者
ストアドプロシージャの利用

質問
-
お世話になります。
Visual Studio 2005(vb使用)
SQL Server 2005
上記環境で開発を行っております。
SQLサーバ内のSP(ストアドプロシージャ)クエリをしたく
Dim SQLCommand As SQLCommand = SQLServerDB.CreateCommand()
Dim Params As SQLParameter
SQLCommand.CommandText = "@StoredProcedure"
SQLCommsnd.CommandType = CommandType.StoredProcedure
Params = SQLCommand.Parameters.Add("@Argument", SqlDbType.NVarChar, 100)
Params.Value = Argument
SQLCommand.Parameters("@Argument").Value = Params
Num = SQLCommand.ExecuteNonQuery()
Console.WriteLine(Num)
と、記述しているのですが、
SQLサーバのSPに巧く、引数が渡りません。
修正点、参考ページ等があればご教授お願いします。
回答
すべての返信
-
trapemiya さん
ありがとうございます。
早速言われていた点を修正してみましたが、
SQLCommand.Parameters.AddWithValue("@Argument", Argument)
と記述し直しても、巧くいきません。
上記コードをヘルプ検索して見てのですが、
Odbc接続に対応するものの様で
ADO.NETでのSQLServerへの接続の場合、
プロシージャまた関数、”@StoredProcedure”にはパラメータ”@Argument”が必要ですが、設定されませんでした
とのエラーが出てきます。
他にも何か原因があるのでしょうか?
PS.ストアドプロシージャの頭に@はつけていません。
今回のコード記述の際に、解かり易くしようと思いつけてみました。
-
SQL serverでもAddWithValueは使えますよ。
SqlParameterCollection.AddWithValue メソッド
http://msdn2.microsoft.com/ja-jp/library/system.data.sqlclient.sqlparametercollection.addwithvalue(VS.80).aspx以下の記述で動くはずです。
SQLCommand.CommandText = "HogeStoredProcedure";
SQLCommand.CommandType = CommandType.StoredProcedure;SQLCommand.Parameters.Clear();
SQLCommand.Parameters.AddWithValue("@Argument", Argument);Num = SQLCommand.ExecuteNonQuery();
@Arugumentのスペル不一致や、Argumentに正しく値が入っているかをチェックしてみて下さい。