create procedure Proc1
...
SET XACT_ABORT ON
BEGIN TRANSACTION
insert into ...
update ...
COMMIT TRANSACTION我是通过C#程序去执行这个存储过程
...
int val = cmd.ExecuteNonQuery();
...
我调试的时候
不管存储过程是否执行成功
返回的 val 都是2哪位指导我一下,如何判断存储过程是否执行成功

解决方案 »

  1.   

    我在 MS-SQL Server-基础类  也发了一个这个问题
    解决了 一起结贴
      

  2.   

    在调用这个存储过程的c#代码中加上try{}catch (Exception ex){throw ex}就可以看到了
      

  3.   


    你自己的说法有问题。什么叫做“不管存储过程是否执行成功”呢?不成功的标准是什么?例如我们写 “update aaa set bbb=111 where ccc=1234”,有些人把根本没有记录满足ccc==1234这个时候就叫做“失败”,因为他硬说只要update就一定要有数据被改变。这样他就会产生很多争吵。只要存储过程返回了2,那么它就执行成功了。至于为什么你执行成功的代码没有满足预想的结果,自己去分析编程问题。不要在问题之前把概念可以搞错,以免误导别人往错误的方向想去看。
      

  4.   

    就是我的存储过程执行的两个insert语句,不管事务是提交还是回滚
    我用C#调用这个存储过程的时候
    int val = cmd.ExecuteNonQuery();
    返回的 val 都是2
      

  5.   

    在存储过程中判断是否添加成功,然后返回值
    @@ROWCOUNT 判断上一条语句影响行数
    UPDATE authors SET au_lname = 'Jones'
    WHERE au_id = '999-888-7777'
    IF @@ROWCOUNT = 0
       print 'Warning: No rows were updated'
      

  6.   

    cmd.ExecuteNonQuery();是返回影响的行数
    改为cmd.ExecuteScalar();
    在提交或回滚事务时返回一个值
    然后根据返回值判断是不否成功
      

  7.   

    [url]http://bbs.dospy.com/thread-9177853-1-249-1.html[/url]
      

  8.   

    写存储过程中返回值
    例:如果执行成功return 0 失败 return 1.
    在程序中就可以判断返回值。
      

  9.   

    int val = cmd.ExecuteNonQuery();
    返回的 val 都是2