2011-09-20 2 views
-2

저장 프로 시저에서 커서를 사용하고 커서 이외의 다른 방법이 없습니다.SQL Server : 커서 성능

여기에 내 대본을 붙여 넣었습니다. 이 커서의 성능을 향상시키고 싶습니다. 약간의 배경. '이름'과 '액션'을 전달하고 커서는 다른 저장 프로 시저를 호출합니다. 모든 저장 프로 시저에서 다른 매개 변수 (ID)를 전달했습니다. 성능을 향상 시키십시오.

ALTER PROCEDURE dbo.Driver_sp 
AS 

TRUNCATE TABLE Driver_tbl 

INSERT INTO Driver_tbl (ID,Name,Action,vipbatchid,processseq) 
SELECT ID,Name,Action,batchid,ProcessSeq 
FROM pcis_tbl 


DECLARE @name varchar(20), 
     @action varchar(20), 
     @ID bigint 

DECLARE cur CURSOR LOCAL FOR 
    SELECT id,name,action FROM Driver_tbl 
    ORDER BY processseq 

OPEN cur 

FETCH NEXT FROM cur INTO @id, @name,@action 

WHILE @@FETCH_STATUS = 0 

BEGIN 

    if (@name = 'A' and @action = 'Update') 
    BEGIN exec A_sp @ID END 
    else 
    if (@name = 'B' and @action = 'Update') 
    BEGIN exec B_sp @ID END 
     else 
     if (@name = 'C' and @action = 'Update') 
     BEGIN exec C_sp @ID END 
     else 
     if (@name = 'D' and @action = 'Update') 
     BEGIN exec D_sp @ID END 


fetch next FROM cur INTO @id, @name,@action 

END 
CLOSE cur 
DEALLOCATE cur 

감사합니다.

+7

에 TSQL, 변경 CURSOR 선언을 사용하고 있습니다. – Blindy

+0

Transact SQL입니까? –

+3

저장된 procs 사용자 정의 함수를 만들면 명시 적 커서가 필요하지 않습니다. – TheCodeKing

답변

4

가정하면, "거기에 다른 방법이 없지만 커서 * *"나는 당신의 평가를 거부

DECLARE cur CURSOR FAST_FORWARD FOR