-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
ありがとう!!
にTSQL、変更のカーソル宣言を使用しています。 – Blindy
は、Transact SQLということですか? –
あなたがそれらの保存されprocsのユーザー定義関数を作成する場合は、明示カーソルを必要としません。 – TheCodeKing