저장 프로 시저를 반복적으로 실행해야하는 상황이 발생했습니다. 이제이 프로 시저 (spMAIN)에는 T1에서 테이블 값을 찾는 내부 구조가 있습니다.반복적으로 저장 프로 시저 실행
ID Status
---- --------
1 New
2 New
3 success
4 Error
이제 커서의 상태로 모든 행을 찾습니다 '새'
이제 동안 처리, 커서의 인스턴스에 오류가 발생하는 경우, 다른 SP는 spError는 '상태'라고해야 할 말 T1의 열을 'Error'로 업데이트하고 spMAIN을 다시 호출하여 프로세스를 반복하고 행을 찾습니다. 'new'포함
어떻게해야합니까? 또한 SP에 다른 SP가 있고 SP에서 오류가 발생하면 동일한 작업을 수행해야하며 T1 테이블을 업데이트해야합니다 ('오류'). spMAIN을 다시 호출해야합니다.
도 추천 할만한 제품이 있습니까? 여기
당신은 오류가 당신이하는 것이 좋습니다 것입니다 SQL 서버 2005로 시작하는 SQL 서버에 내장 년대 TRY 캐치 기능을 취급 수행 할 수ALTER PROC zzSpMain
AS
BEGIN
DECLARE @id INT
BEGIN TRY
IF EXISTS (SELECT *
FROM dbo.zzTest
WHERE istatus = 'new')
BEGIN
DECLARE c CURSOR
FOR SELECT id
FROM zztest
WHERE istatus = 'new'
OPEN c
FETCH NEXT FROM c INTO @id
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @id
IF @id = 2
BEGIN
UPDATE zztest
SET istatus = 'error'
WHERE id = @id
RAISERROR ('Error occured', 16,
1)
END
UPDATE zztest
SET istatus = 'processed'
WHERE id = @id
FETCH NEXT FROM c INTO @id
END
CLOSE c
DEALLOCATE c
END
END TRY
begin CATCH
EXEC zzSpError
END CATCH
END
내가 필요한 것을 할 수있는 더 좋은, 더 RDBMS - 설정 - 스타일의 방법이 일반적으로 확신 커서를 볼 때마다. – Joe