2

查看存储过程时,逻辑似乎是“做事”,然后是select 1 as add_success. 如何add_success在 C# 中检查该值?

代码

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

它似乎做的一切都是正确的,但默认的返回ExecuteNonQuery是受影响的行,-1即使所有的操作似乎都成功完成了。

我还尝试添加一个带有名为的返回值的参数,add_success但这@add_success似乎也不起作用。

如何将值从存储过程返回到 C#?

4

2 回答 2

7
  1. 你需要使用command.ExecuteScalar().
  2. 结果将是结果集中第一个表的第一行。
于 2013-03-22T18:23:13.013 回答
1

尝试该SqlCommand.ExecuteScalar()方法而不是ExecuteNonQuery()source)。

于 2013-03-22T18:24:03.893 回答