c# - 存储过程的返回值
问题描述
我有一个问题,当我执行这个存储过程时:
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
就在插入(在开始-结束内)之后,return
或者select
(然后你必须使用ExecuteQuery
而不是ExecuteNonQuery
),或者有一个输出参数,以获得@ROWCOUNT
.
@MickyD 的建议:
SQL 变量@@ROWCOUNT
保存受最后一条语句影响的行数,在这种情况下,就在执行之后Insert
。如果执行任何其他操作,则该值将不再相同,因此将其分配给本地定义的变量并传回给调用者。
推荐阅读
- vue.js - NativeScript DatePickerField:如何将附加参数与更改的日期一起传递
- django - 通过先前排序的查询集过滤 django 查询集
- qt - QML TapHandler onLongPress 获取位置坐标
- javascript - Mongoose聚合-使用组和计数
- c# - 如何删除 csvFile csvHelper, c# 的尾随逗号
- ios - 在codemagic上为ios构建flutter应用程序时出错-在目标`Runner`上自动分配版本`8.0`的平台`iOS`
- sql - 如何在 PL/SQL 中设置特定日期对表的操作执行?
- python - 线程停止 Python3 中的主程序
- python - python 冒泡排序失败
- c# - 将来自不同用户的邮件发送到一个特定的邮件 - ASP.NET MVC