-2
Я использую курсор в хранимой процедуре, и нет другого способа, кроме указателя.SQL Server: производительность курсора
Я вставил свой сценарий здесь. Я хочу улучшить производительность этого курсора. Немного фона. Im передает «имя» и «действие», а курсор вызывает разные хранимые процедуры взамен. Я прошел еще один параметр (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? –
Если вы сделаете эти сохраненные функции procs определенными пользователем, вам не понадобится явный курсор. – TheCodeKing