循环在T-SQL中,如何获取字段值

时间:2010-12-13 14:19:03

标签: tsql stored-procedures

在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 个答案:

答案 0 :(得分:2)

我阅读了WHILE loopCURSOR的MSDN文档。

例如,假设您的临时表名为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,但一切皆有可能。

告诉我们您的检查是什么,以及如果您需要更多帮助,您的临时表会是什么样的。

答案 1 :(得分:0)

你不能只使用游标并在游标内运行一个更新语句吗?

游标:http://www.jackdonnell.com/articles/SQL_CURSOR.htm