Cursor

About DataBase 2009. 4. 3. 16:10 posted by 무명시인

** 커서 **
쿼리 문법에 의해 데이타를 처리할 때, 보통은 한꺼번에 실행을 하게 된다.
커서란, 한줄씩 처리 하려고 할때 쓰인다

형식)

	

	declare 이름 scroll cursor for 구문 for 

예)

	
--  //커서의 정의
DECLARE myCursor scroll CURSOR
FOR
SELECT * FROM Table
FOR READ ONLY

--  //커서 오픈
OPEN myCursor

--  //커서가 열린 상태를 알려주고 테리블의 행의 갯수를 반환
SELECT @@cursor_rows

DECLARE @i INT
SET @i = 0

WHILE @i < @@cursor_rows
 BEGIN
  
  -- 커서의 처음 것(한줄씩 읽어 나간다)
  fetch next                      
  from myCursor    
  -- 0이면 수행성공,-1이면 결과가 범위 밖,-2면 값이 없음
  select @@fetch_status   

  SET @i = @i + 1
 END

/*
-- //지금 커서의 전에 것
fetch prior      
from myCursor    
select @@fetch_status  
-- //첫번째
fetch first 
from myCursor    
select @@fetch_status  
-- //마지막
fetch last                      
from myCursor    
select @@fetch_status  
*/
--  //열린 커서를 닫는다
close myCursor     

-- //커서참조를 제거. 이거를 실행하면 재 오픈 할수 없고 다시 정의 해야한다
deallocate myCursor