【发布时间】:2016-09-26 10:10:17
【问题描述】:
DECLARE @Versions table (id int);
INSERT INTO @Versions
SELECT DISTINCT Version_Id
FROM dbo.values
WHERE CatId = (SELECT id FROM dbo.Category WHERE Name = 'Locations')
SELECT * FROM @Versions --- returns 1,2
到目前为止,我能够获取版本的数据并将其存储在表值参数版本中。但现在我需要对其进行迭代以执行一些操作,例如
WHILE(till @Versions has value ) -- Iterate till @Versions exhausts its value ,which will be ideally 1,2 then stop iteration
BEGIN
-- Update Statements for each version
END
如何指定仅在 @Versions 具有值之前运行的条件(增量 - 对于版本 1 执行一些更新,然后对 v2 执行相同操作,然后退出)
如果有更好的方法,请提出建议!
【问题讨论】:
-
你看过sql server中的游标了吗?它们在一组上声明,可用于将值提取到一个或多个变量中。您可以设置一个 while 循环,只要游标集中还有记录,该循环就会运行。如果您想在没有游标的情况下求解,可能的解决方案取决于您要执行的操作。除非您的游标用于定义要执行的动态 sql,否则通常是可能的。
标签: sql-server tsql sql-server-2008-r2 table-valued-parameters