Простая хранимая процедура MS SQL с циклом и курсором
ALTER PROCEDURE spReference
AS
SET NOCOUNT ON
/*Переменные*/
DECLARE @ID NVARCHAR(50)
-- DECLARE @VAL VARCHAR (500)
/*Табличная переменная*/
DECLARE @Table_tmp TABLE ( cat varchar(50), project varchar(50), counts int )
/*Объявляем курсор*/
DECLARE @CURSOR CURSOR
/*Заполняем курсор*/
SET @CURSOR = CURSOR SCROLL
FOR
SELECT Project FROM Projects WHERE Status = 1
/*Открываем курсор*/
OPEN @CURSOR
/*Выбираем первую строку*/
FETCH NEXT FROM @CURSOR INTO @ID
/*Выполняем в цикле перебор строк*/
WHILE @@FETCH_STATUS = 0
BEGIN
IF EXISTS(SELECT DISTINCT Name FROM TableName WHERE Name=@ID)
BEGIN
/*Вставляем параметры в таблицу если условие соблюдается*/
-- INSERT INTO @Table_tmp (cat, project, counts) VALUES('1', @ID, @ID)
INSERT INTO @Table_tmp ( cat, project, counts)
SELECT tableFunctionInfo.* FROM dbo.tableFunctionInfo(@ID) tableFunctionInfo
END
/*Выбираем следующую строку*/
FETCH NEXT FROM @CURSOR INTO @ID
END
CLOSE @CURSOR
-- возвращаем таблицу SELECT * FROM @Table_tmp
RETURN
Комментариев нет:
Отправить комментарий