create procedure Proc1
...
SET XACT_ABORT ON
BEGIN TRANSACTION
insert into ...
update ...
COMMIT TRANSACTION我是通过C#程序去执行这个存储过程
...
int val = cmd.ExecuteNonQuery();
...
我调试的时候
不管存储过程是否执行成功
返回的 val 都是2哪位指导我一下,如何判断存储过程是否执行成功
...
SET XACT_ABORT ON
BEGIN TRANSACTION
insert into ...
update ...
COMMIT TRANSACTION我是通过C#程序去执行这个存储过程
...
int val = cmd.ExecuteNonQuery();
...
我调试的时候
不管存储过程是否执行成功
返回的 val 都是2哪位指导我一下,如何判断存储过程是否执行成功
解决了 一起结贴
你自己的说法有问题。什么叫做“不管存储过程是否执行成功”呢?不成功的标准是什么?例如我们写 “update aaa set bbb=111 where ccc=1234”,有些人把根本没有记录满足ccc==1234这个时候就叫做“失败”,因为他硬说只要update就一定要有数据被改变。这样他就会产生很多争吵。只要存储过程返回了2,那么它就执行成功了。至于为什么你执行成功的代码没有满足预想的结果,自己去分析编程问题。不要在问题之前把概念可以搞错,以免误导别人往错误的方向想去看。
我用C#调用这个存储过程的时候
int val = cmd.ExecuteNonQuery();
返回的 val 都是2
@@ROWCOUNT 判断上一条语句影响行数
UPDATE authors SET au_lname = 'Jones'
WHERE au_id = '999-888-7777'
IF @@ROWCOUNT = 0
print 'Warning: No rows were updated'
改为cmd.ExecuteScalar();
在提交或回滚事务时返回一个值
然后根据返回值判断是不否成功
例:如果执行成功return 0 失败 return 1.
在程序中就可以判断返回值。
返回的 val 都是2