Цикл в T-SQL, как получить значение поля - PullRequest
0 голосов
/ 13 декабря 2010

В базе данных SQL Server 2005 у меня есть хранимая процедура. Я получаю некоторую дату, чтобы поместить их в временную таблицу. Я хотел бы цикл в этой временной таблице и в зависимости от значения некоторых полей изменить значение других и сделать некоторые проверки. Я должен сделать это для каждой строки.

Как я могу это сделать?

спасибо,

Update1

BEGIN
    SET NOCOUNT ON

    --Create temp table
    CREATE TABLE #MyTempTable(
        id      int IDENTITY(1, 1),
        PriceMax    int,
        PriceMin    int
    )

    -- Insert in temp table
    INSERT INTO #tmpReconciliation (PriceMax, PriceMin) 
        SELECT  PriceMax    = PriceMaxProduct,
                PriceMin    = PriceMinProduct
        FROM    Products

    DECLARE @RowNum int
    SELECT  @RowNum = Count(*) From #MyTempTable 
    WHILE @RowNum > 0                          
    BEGIN   

        if(....)
            PriceMin = 0
                 ....

    END

    --Drop temp table
    DROP TABLE #MyTempTable

END

Ответы [ 2 ]

2 голосов
/ 13 декабря 2010

Я прочитал документацию MSDN для WHILE loop и CURSOR .

Например, давайте представим, что ваша временная таблица называется Employee:

DECLARE @Emp_id int

DECLARE Employee_Cursor CURSOR FOR
SELECT EmployeeID 
FROM Employee;

OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor INTO @Emp_id;
WHILE @@FETCH_STATUS = 0
   BEGIN
      -- Here your actions
      PRINT @Emp_id
      FETCH NEXT FROM Employee_Cursor INTO @Emp_id;
   END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
GO

Здесь я решил напечатать EmployeeId, но все возможно.

Скажите нам, какие у вас проверки и как выглядит ваша временная таблица, если вам нужна дополнительная помощь.

0 голосов
/ 13 декабря 2010

Разве вы не можете просто использовать курсор и внутри курсора запустить оператор обновления ??

Курсоры: http://www.jackdonnell.com/articles/SQL_CURSOR.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...