суббота, 7 декабря 2013 г.

MS SQL stored procedure with cursor


Простая хранимая процедура 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 




Комментариев нет:

Отправить комментарий

Постоянные читатели

Популярные сообщения