------

[ AD ] Port Monitor ( Try to use a Best WebSite Monitoring Tool )

------
A cursor with the name ... already exists

[현상] 

커서가 이미 존재 하는 에러가 발생한다.

 

[조치 방법]

일반적인 커서 정의와 패치 형태에서 에러가 발생하게 되면, 에러시에 처리를 해주지 않으면,

커서가 존재해서 다시 사용이 안되는 현상으로 정상 쿼리가 수행되지 않는다.

 

[변경전]

DECLARE @b_value

 

BEGIN TRY

 DECLARE a_cursor FOR

SELECT a.bvalue FROM a_table

OPEN a_cursor

FETCH NEXT FROM a_cursor

into @b_value

 

WHILE @@FETCH_STATUS = 0

BEGIN

--  수행 문.....

 

--- 에러 발생한다면....

 

-- 수행 문....

 

FETCH NEXT FROM a_cursor

into @b_value

END

CLOSE a_cursor

DEALLOCATE a_cursor

END TRY

BEGIN CATCH

-- ...

END CATCH

 

 

[변경후]

 

DECLARE @b_value

 

BEGIN TRY

 DECLARE a_cursor FOR

SELECT a.bvalue FROM a_table

OPEN a_cursor

FETCH NEXT FROM a_cursor

into @b_value

 

WHILE @@FETCH_STATUS = 0

BEGIN

--  수행 문.....

 

--- 에러 발생한다면....

 

-- 수행 문....

 

FETCH NEXT FROM a_cursor

into @b_value

END

CLOSE a_cursor

DEALLOCATE a_cursor

END TRY

BEGIN CATCH

-- ...

if CURSOR_STATUS('global','a_cursor') >= 0

BEGIN

CLOSE a_cursor

DEALLOCATE a_cursor

END

END CATCH

+ Recent posts