-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
謝謝!!
「*有沒有其他辦法,但光標*」我拒絕你的評價。 – Blindy
是Transact SQL嗎? –
如果你使這些存儲過程用戶定義函數,你將不需要一個明確的遊標。 – TheCodeKing