在Sqlserver中处理!比如:要插入到表A中一条数据.如果没有插入成功.
   那么插入到表B一些信息.
否则.
   那么插入到表C一些信息.继续其它操作.(用 C# 伪 SQL 代码表示如下 ):try
{
   insert into TableA ( col1,col2 ) values ( val1,val2 );
   insert into TableB ( col1,col2 ) values ( val1,val2 );
}
catch
{  
   insert into TableC ( col1,col2 ) values ( val1,val2 );
}doSomething...

解决方案 »

  1.   

    if @@error=0
       那么插入到表B一些信息.
    else
       那么插入到表C一些信息.
      

  2.   

    sql server 2005可以实现
     http://sqlserver2005.itpub.net/post/22359/201125
      

  3.   

    对于 @@Error ,一些情况是不可以的,下面这种情况可以通过。
    declare @tab table( i  varchar(3) )
    insert into @tab select 'abcde'
    if (@@error <> 0) begin
    insert into t(v) values ('eee')
    end else begin
    print 'err'
    end
    但是下面这种情况,如果网络暂时不通,@@Error就处理不了了。
    declare @tab table( i  varchar(3) )
    insert into[192.168.1.100].[Aigdollar].[dbo].[ShopOrderInfo] (userid ,adddate,orderstate,nickname) 
    values ( '1'  ,getdate(),1,'dfasdf')
     
    if (@@error <> 0) begin
    insert into t(v) values ('eee')
    end else begin
    print 'err'
    end
      

  4.   

    insert into TableA ( col1,col2 ) values ( val1,val2 );
    if @@error<>0
      begin
      insert into TableB ( col1,col2 ) values ( val1,val2 );
      if @@error<>0 
       insert into TableC ( col1,col2 ) values ( val1,val2 );
      end
      

  5.   

    我要在 SqlServer 2000上实现哟。
      

  6.   

    这样吧,现在这个问题有点急。需要检测网络连接。也就是说,在SQLServer中,检测一个IP是否可用。用
    exec master..xp_cmdshell 'ping 192.168.1.100' 
    可能不行,一般防火墙会拦截。

    exec master..xp_cmdshell 'isql -S 192.168.1.100 -U sa -P sa -d xh' 
    可能也不行,如果失败,等待时间会很长。
    有没有SQL的函数或存储过程,我想试着 Open 一下。
      

  7.   

    if exists(
    select *
    FROM OPENDATASOURCE(
             'SQLOLEDB',
             'Data Source=服务器名;User ID=sa;Password=密码'
             ).[数据库名].dbo.表名)
    print '存在'这样行吗?
      

  8.   

    这样也不行。
    和 select * FROM OPENDATASOURCE(
             'SQLOLEDB',
             'Data Source=服务器名;User ID=sa;Password=密码'
             ).[数据库名].dbo.表名
    效果是一样的。
    而且如果连接不上,速度超慢。