У меня есть таблица со списком хранимых процедур.
Я использую курсор, чтобы затем выполнить цикл, вызвать и зафиксировать результат каждой хранимой процедуры (все они возвращают 0 или 1).
Так что я:
DECLARE @PROC_ID INT,
@PROC_NAME VARCHAR(50)
SELECT *
INTO #MY_PROCS
FROM TABLE_PROCS
DECLARE MY_CURSOR CURSOR FOR
SELECT PROC_ID, PROC_NAME
FROM TABLE_PROCS
OPEN MY_CURSOR
FETCH NEXT FROM MY_CURSOR INTO @PROC_ID, @PROC_NAME
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @PROC_RESULT = .......
UPDATE #MY_PROCS SET PROC_RESULT = @PROC_RESULT WHERE PROC_ID = @PROC_ID
END
CLOSE MY_CURSOR
DEALLOCATE MY_CURSOR
DROP TABLE #MY_PROCS
Я читал о курсорах и читал, что мне следует установить его как READ ONLY
и NO LOCK
, если это возможно.
Кроме того, следует ли использовать табличную переменную вместо временной таблицы?
Можно ли это сделать без курсора?