c# - 存储过程的返回值

标签 c# sql sql-server

我有一个问题,当我执行这个存储过程时:

IF NOT EXISTS (SELECT * FROM TBL_M 
               WHERE TYPE_M = 'reservation' 
                 AND NUM_DESK = @NUMBER_DESK 
                 AND ID_TIME = @ID_TIME)
BEGIN
    INSERT INTO TBL_M 
    VALUES ('reservation', @NUMBER_DESK, @NUM_USER, @ID_TIME)
END

一切正常,唯一的问题是我想知道何时执行插入,何时不执行。

在 C# 中,我使用以下方法 ExecuteNonQuery()
但它总是返回 -1 ,您如何识别插入以及何时不插入。

最佳答案

声明一个变量

Declare @ROWCOUNT INT = 0

分配变量
Select @ROWCOUNT = @@ROWCOUNT

就在插入之后(在开始结束内)returnselect (然后你必须使用 ExecuteQuery 而不是 ExecuteNonQuery ),或者有一个输出参数,以获得 @ROWCOUNT 的值.

@MickyD 的建议:

SQL 变量 @@ROWCOUNT 保存受最后一条语句影响的行数,在这种情况下,就在执行 Insert 之后.如果执行任何其他操作,该值将不再相同,因此将其分配给本地定义的变量并传回给调用者。

关于c# - 存储过程的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61567299/

相关文章:

c# - 使用动态类型从匿名对象中获取值是不好的做法吗?

c# - 新对象过时了吗?

php - 如何修复我的查询

javascript - Sequelize hasMany 关系的 getAssociation

mysql - 如何统计Mysql中特定列的字段数?

SQL选择日期范围的第一个值和最后一个值

C# - 标记自定义窗体的基类使设计 View 显示 HTML

c# - 如何使用日期时间选择器

sql - 如何在SQL中使用正则表达式?

c# - SQL46010 在 Visual Studio 15 中创建存储过程时出现语法错误