본문 바로가기
DataBase/MS-SQL

MS-SQL 커서(Cursor)를 이용한 쿼리생성 및 쿼리 실행 하기

by 백룡화검 2010. 11. 3.

SET NOCOUNT ON
DECLARE cur_StartKnow CURSOR FAST_FORWARD
FOR
SELECT community_id,cabinet_id  FROM KnowledgePlus_Sys.dbo.t_CabinetBasic

OPEN cur_StartKnow

DECLARE @CommunityID int
DECLARE @CabinetID int

FETCH NEXT FROM cur_StartKnow INTO @CommunityID, @CabinetID

WHILE @@FETCH_STATUS = 0

BEGIN
DECLARE @query VARCHAR(1000)
DECLARE @tableName VARCHAR(1000)

SET @tableName = 'KnowledgePlus_User.dbo.t_C'+ CAST(@CommunityID as varchar) + '_B' + CAST(@CabinetID as varchar)
 
 
SET @query = 'UPDATE ' + @tableName + ' SET lastversion_yn = ''Y'', start_date = cast(''1900-01-01'' as varchar(100)), update_date = getdate() '
+ 'WHERE OID IN ( SELECT OID FROM ' + @tableName + ' WHERE lastversion_yn = ''W'' AND start_date < getdate() )'


exec (@query )

FETCH NEXT FROM cur_StartKnow INTO @CommunityID, @CabinetID
END

CLOSE cur_StartKnow
DEALLOCATE cur_StartKnow
GO

 

 

 

커서를 생성하고, 우선 첫번째 조회쿼리로 하위 UPDATE에 필요한 내용을 변수에 담아 놓는다.

(위에서는 Table 이름을 얻기위해 쿼리를 실행하게 된다.)

 

그다음 하위 쿼리를 생성해서 변수에 담고,

변수에 있는 내용을 실행한다.

 

첫번째 SELECT 쿼리에 있는 내용이 모두 실행될때까지 반복된다.


'DataBase > MS-SQL' 카테고리의 다른 글

MS-SQL 랜덤 Select  (1) 2012.06.15
Cursor in Stored Procedure  (0) 2010.11.03
MS-SQL 커서 사용 예제  (0) 2010.11.03
프로시져 암호화  (0) 2010.09.09
[본문스크랩] SQL 강좌 5  (0) 2010.04.24