2

ストアドプロシージャを見ると、ロジックは「dostuff」の後に。が続くように見えますselect 1 as add_successadd_successC#でその値を確認するにはどうすればよいですか?

コード

using (SqlConnection connection = new SqlConnection(_connectionString)) {
  using (SqlCommand command = new SqlCommand("<sprocname>", connection)) {
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add(<a parameter>); // x10 or so
    connection.Open();
    var result = command.ExecuteNonQuery();
    // result is always -1, despite the sproc doing everything it is supposed to do (modify a few different tables)

ストアドプロシージャ

// Do some stuff including inserts on a few different tables, then
INSERT INTO Table (field1, field2)
VALUES (@Val1, @Val2)

SELECT 1 AS add_success

すべてが正しく実行されているように見えますが、デフォルトのreturn fromExecuteNonQueryは影響を受ける行であり-1、すべての操作が正常に完了しているように見えても、常にそうです。

また、という名前の戻り値を持つパラメーターを追加しようとしましたadd_success@add_success、それも機能しないようでした。

ストアドプロシージャからC#に値を返すにはどうすればよいですか?

4

2 に答える 2

7
  1. を使用する必要がありますcommand.ExecuteScalar()
  2. 結果は、結果セットの最初のテーブルの最初の行になります。
于 2013-03-22T18:23:13.013 に答える
1

sourceSqlCommand.ExecuteScalar() )の代わりにメソッドを試してください。ExecuteNonQuery()

于 2013-03-22T18:24:03.893 に答える