首页 > 解决方案 > 存储过程的返回值

问题描述

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

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,您如何识别插入以及何时不插入。

标签: c#sqlsql-server

解决方案


声明一个变量

Declare @ROWCOUNT INT = 0

分配变量

Select @ROWCOUNT = @@ROWCOUNT

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

@MickyD 的建议:

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


推荐阅读