0

Sql Server 2000および2005では、whileループでselectステートメントを実行しています。JFYI、このselectステートメントは、多くのリンクされたサーバーに接続し、いくつかの値を取得しています。

エラーが発生した場合でも、ループ内の次のステートメントを実行する必要があります(c#のcontinueステートメントと同様)

例:-

while @rowcount < 10
begin
 set @sql = 'select * from <Remotemachine>.db1.dbo.table1'
 exec sp_executesql @sql
 set @rowcount = @rowcount +1
End
4

2 に答える 2

1

ここから開始:http://www.sommarskog.se/error_handling_2005.html

一部のエラーはセッションターミネータであり、バッチターミネータでさえあり、それらをトラップできないことに注意してください

私があなたに与えたリンク(そしてそのページの2つのリンク)はあなたにこれを処理する方法についての十分な情報を与えるはずです

ところで、トラップできないエラーでない限り、実行を継続します

これを実行します

declare @rowcount int, @sql nvarchar(100)
set @rowcount = 1
while @rowcount < 10
begin
 set @sql = 'select * from <Remotemachine>.db1.dbo.table1'
 exec sp_executesql @sql
 print @rowcount
 set @rowcount = @rowcount +1
End

これが出力です

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
1
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
2
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
3
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
4
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
5
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
6
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
7
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
8
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '<'.
9

TRY CATCHこれをトラップするために使用できる方法は次のとおりです

declare @rowcount int, @sql nvarchar(100)
set @rowcount = 1
while @rowcount < 10
begin
 set @sql = 'select * from <Remotemachine>.db1.dbo.table1'

 begin try 
      exec sp_executesql @sql
 end try 
 begin catch
      select ERROR_MESSAGE() -- or do something
 end catch
 print @rowcount
 set @rowcount = @rowcount +1
End
于 2010-09-27T16:03:39.800 に答える
1

2005年には、トライ/キャッチを行うことができます。

于 2010-09-27T16:04:25.010 に答える