2011-09-20 18 views
-2

私は、ストアドプロシージャでカーソルを使用していますし、他の方法が、カーソルはありません。SQL Serverの:カーソルのパフォーマンス

私はここに私のスクリプトを貼り付けています。私はこのカーソルのパフォーマンスを改善したい。 少しの背景です。 Imは 'name'と 'action'を渡し、カーソルは別のストアドプロシージャを呼び出します。私はそれらのストアドプロシージャのすべてで別のパラメータ(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、変更のカーソル宣言を使用しています。 – Blindy

+0

は、Transact SQLということですか? –

+3

あなたがそれらの保存されprocsのユーザー定義関数を作成する場合は、明示カーソルを必要としません。 – TheCodeKing

答えて

4

と仮定すると、あなたは「そこには他に方法はありませんが、カーソルが* *」私はあなたの評価を拒否する

DECLARE cur CURSOR FAST_FORWARD FOR 
関連する問題