if (object.ErrorCode=='5809')
print 'erorr'

解决方案 »

  1.   

    IF @@ERROR = 547
       print "错误547"
      

  2.   

    就是表A的主键存在和表B的外键约束,当删除这个表A的某一条记录时,如果表B存在匹配数据会因为这个约束而弹出547错误。
    就是说如果在store procedure里面进行这样的操作,如何在过程内部捕获这个错误,把这个错误代号,作为一个output参数返回?
    不要在具体的客户端程序中去进行这个错误捕捉!
    IF @@ERROR = 547
       print "错误547"
    这个是不行的,系统会先抛出这个错误!
      

  3.   

    下面的语句不知道对你有不有帮助.-----------------------------------------------------------------------------
    --程序一开始就加了一个判断.如果在存取过程之内@intTransactionCountOnEntry数目
    --没有异样,那么就没有理由要求在该过程之内进行提交或回滚.
    -----------------------------------------------------------------------------
    ALTER  Procedure sP
    (
    ......
    )
    As
    set nocount on  --使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息Declare @intErrorCode int,
            @intTransactionCountOnEntry int --在存取过程的入口处记录已打开事务的数目.
    Select @intErrorCode = @@Error
    -----------------------------------------------------------------------------
    If @intErrorCode = 0                  
    Begin                                             
        Select @intTransactionCountOnEntry = @@TranCount  --返回当前连接的活动事务数
        BEGIN TRANSACTION          --将 @@TRANCOUNT 加 1
    End
    -----------------------------------------------------------------------------
    If @intErrorCode = 0
    begin
    您的语句......
    Select @intErrorCode = @@Error
    endIf @intErrorCode = 0
    begin
    您的语句......
    Select @intErrorCode = @@Error
    end
    -----------------------------------------------------------------------------
    If @@TranCount > @intTransactionCountOnEntry    --出现异样,要么提交,要么回滚
    Begin
        If @intErrorCode = 0
            COMMIT TRANSACTION                     
        Else
            ROLLBACK TRANSACTION                  
    End
    -----------------------------------------------------------------------------
    return @intErrorCode
      

  4.   

    1.外部约束还可以设置为 : set null 或 set default 你看具体情况来设.不一定要设置为 cascade
    2.还有 initially deferred 也可事务结束后检查啊
      

  5.   

    2005都用上了啊,你是用.net 2005速成版里带的sqlserver2005 CTP?