根据 SQL 服务器中的条件执行 While 循环

Do While loop based on conditions in SQL Server

如何根据以下条件在 SQL 服务器中实现 while 循环。

然后我需要执行 select 语句 which returns ITEM_CODE ,它也可能有多个行。

我想在 while 循环中为每个 ITEM_CODE 做的事情我需要从其他 table 获取数据(包括连接)并将这些数据插入 table .此循环将根据第一个语句 return.

结束计数

示例查询结构:

SELECT ITEM_CODE  //While loop must execute the count of this rows
FROM   'TABLE_1'
WHERE  ITEM_AVAILABILITY = 'TRUE'

此语句将 return 单行或 return 多行。 我每次都需要将此 ITEM_CODE 传递给 while 循环。在 while 循环中,我将从多个 table 中获取值并将其插入另一个 table.

WHILE (@COUNT <>0){
//Need to have the ITEM_CODE while looping each time.
//Get data from multiple tables and assign to variables (SET @VARIABLES)
//Insert statement
IF (@COUNT = @COUNT)
     BREAK;
}

SQL服务器是否可以,如果可以,请帮我解决这个问题。

试试这个:

DECLARE @DataSource TABLE
(
    [ITEM_CODE] VARCHAR(12)
);

INSER INTO @DataSource ([ITEM_CODE])
SELECT ITEM_CODE  //While loop must execute the count of this rows
FROM   'TABLE_1'
WHERE  ITEM_AVAILABILITY = 'TRUE';

DECLARe @CurrentItemCode VARCHAR(12);

WHILE(EXISTS (SELECT 1 FROM @DataSource))
BEGIN;

    SELECT  TOP 1 @CurrentItemCod = [ITEM_CODE] 
    FROM @DataSource

    --



    --

    DELETE FROM @DataSource
    WHERE [ITEM_CODE] = @CurrentItemCod;

END;

我们的想法是在缓冲区中有数据时执行循环 table。然后在循环的每次迭代中,获取一个随机项目代码值,执行您的内部操作并从缓冲区中删除该值。

有些人使用缓冲区 table 中的行 ID 列,例如 INT IDENTITY(1,1) 并选择第一个元素,进行内部操作,然后按 ID 删除。但是您需要知道记录的数量并在每次迭代时递增 id - 类似于 for cycle.