如何根据以下条件在SQL Server中实现while循环。
然后我需要执行返回ITEM_CODE的select语句,它也可能有多行。
我想在while循环中做的是针对每个ITEM_CODE我需要从其他表(包括joins)中获取数据并将这些数据插入到表中。该循环将基于返回的第一个语句来结束计数。
示例查询结构:
SELECT ITEM_CODE //While loop must execute the count of this rows
FROM 'TABLE_1'
WHERE ITEM_AVAILABILITY = 'TRUE'
此语句将返回单行或可能返回多行。 我需要每次将此 ITEM_CODE 传递给while循环。在while循环中,我将从多个表中获取值并将其插入到另一个表中。
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 Server是否可以,如果可以,请帮助我解决此问题。
答案 0 :(得分:1)
尝试一下:
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;
这个想法是在缓冲区表中有数据时执行循环。然后,在循环的每次迭代中,获取一个随机的项目代码值,执行内部操作并从缓冲区中删除该值。
某些人正在使用缓冲区表中的行ID列,例如INT IDENTITY(1,1)
,并选择第一个元素,进行内部操作,然后按ID删除。但是您需要知道记录的数量,并在每次迭代中增加ID(例如for
周期。