修改程序,对插入的主键进行是否存在的判断,然后在插入或不插:
if not exists (select * from yourtable where mkey = ??)
   insert .....--这条语句发生异常,然后立即中止了存储过程的运行,并扔出异常
else
   ......

解决方案 »

  1.   

    to tj_dns(愉快的登山者) ,主键重复异常只是我的一个假想,也有可能是其他一切insert错误,我只是想知道怎么将错误级别大于19的错误也抓出来,而且也不希望我的存储过程中断,上面只是我写的一个简单的例子,我实际上的存储过程太大了,所以没有办法贴上来
      

  2.   

    http://expert.csdn.net/Expert/TopicView1.asp?id=1675986
    begin
        declare @err int
        BEGIN TRANSACTION
        exec('insert .....')
        select @err=@@error
        if (@err<>0)
        BEGIN
            ROLLBACK TRANSACTION
            return -100
        END
       COMMIT TRANSACTION
    end------------
    丽珠得乐
      

  3.   

    http://expert.csdn.net/Expert/TopicView1.asp?id=1675986
    begin
        declare @err int
        BEGIN TRANSACTION
        exec('insert .....')
        select @err=@@error
        if (@err<>0)
        BEGIN
            ROLLBACK TRANSACTION
            return -100
        END
       COMMIT TRANSACTION
    end------------
    丽珠得乐