c# - 如何从 C# 中的存储过程中获取选定的值?

标签 c# sql-server stored-procedures

当查看存储过程时,逻辑似乎是“执行操作”,然后是 select 1 as add_success。我如何检查 C# 中的 add_success 值?

代码

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# 返回值?

最佳答案

  1. 您需要使用command.ExecuteScalar()
  2. 结果将是结果集中第一个表的第一行。

关于c# - 如何从 C# 中的存储过程中获取选定的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15577306/

相关文章:

c# - 有没有办法从属性测量 C# 函数执行时间?

c# - servicenow - __encoded_query - 一些字段没有被过滤

c# - 在 .NET Core 2.1 中使用通用主机正常关闭

sql - 更新大型表的表架构的最佳方法(SQL Server)

sql-server - Azure移动服务脚本保存经纬度的地理信息

php - 每天获得最高记录

c# - 结束 for 循环的适当条件是什么?

sql-server - SQL Server SELECT 语句 - 如何获取所需信息

mysql - mysql 中自定义类型的替代方案是什么

sql - 您可以在 PostgreSQL 存储过程 IF 子句中执行 WHERE 子句吗?