在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...
那么插入到表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...
那么插入到表B一些信息.
else
那么插入到表C一些信息.
http://sqlserver2005.itpub.net/post/22359/201125
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
if @@error<>0
begin
insert into TableB ( col1,col2 ) values ( val1,val2 );
if @@error<>0
insert into TableC ( col1,col2 ) values ( val1,val2 );
end
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 一下。
select *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=服务器名;User ID=sa;Password=密码'
).[数据库名].dbo.表名)
print '存在'这样行吗?
和 select * FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=服务器名;User ID=sa;Password=密码'
).[数据库名].dbo.表名
效果是一样的。
而且如果连接不上,速度超慢。