2009-06-17 3 views
1

に続ける:これが可能であるキャッチし、私は、このSQLプロシージャ持ちのSQLServer

create procedure DELETE as 
DECLARE VARIABLES 
begin TRY 
DECLARE CURSOR FOR SELECT ANYTHING 
OPEN CURUPD 
FETCH NEXT FROM CURUPD INTO VARIABLES 
WHILE @@FETCH_STATUS = 0 BEGIN 
    UPDATE TABLE BASED SON VARIABLES 
FETCH NEXT FROM CURUPD INTO VARIABLES 
END 
CLOSE CUR 
DEALLOCATE CUR 
end TRY 
begin catch 
DO NOT CARE ABOUT THE ERROR BUT CONTINUE UPDATE ON NEXT RECORD 
end catch; 

を? Robert :-)

答えて

2

WHILEループの内側にTRY/CATCHを配置する必要があります。あなたはそれを持っている方法は、あなたが完了することができないので、を続ける WHILEループはできません。

+0

どうもありがとう - もちろんこれが答えです。 –

0

いくつかのエラーはトラップ可能なものではなく、でも試してバッチを中止し、あなたがXACT_STATE()をチェックして、あなたがSETベースの更新を行うことはできませんあなたがカーソルを必要としないのはなぜ

をどうするかを決定することができるキャッチしますか? また、あなたの試行はループの外ですが、あなたは同じ問題を抱えています。int columをnに変更してみてください。

1

は、このコードを試してみてください。

create procedure DELETE as 
DECLARE VARIABLES 
begin TRY 
DECLARE CURSOR FOR SELECT ANYTHING 
OPEN CURUPD 
FETCH NEXT FROM CURUPD INTO VARIABLES 
WHILE @@FETCH_STATUS = 0 BEGIN 
    UPDATE TABLE BASED SON VARIABLES 
FETCH NEXT FROM CURUPD INTO VARIABLES 
END 
CLOSE CUR 
DEALLOCATE CUR 
end TRY 
begin catch 
FETCH NEXT FROM CURUPD INTO VARIABLES 
continue 
end catch; 
関連する問題