【发布时间】:2012-02-26 17:29:58
【问题描述】:
我想在 WHILE 循环中循环一个字符数组(只有两个值:'C' & 'P')并在 SQL 语句中使用这个变量。
伪代码:
WHILE SELECT 'C' UNION SELECT 'P'
BEGIN
SELECT @Var -- Do real sql-statement here
END
我有这个工作代码,但我想知道它是否可以写得更好/更容易/更优雅?
DECLARE @Var CHAR(1)
DECLARE @counter INT
SET @counter = 0
WHILE @counter < 2
BEGIN
SELECT @Var =
CASE @counter
WHEN 0 THEN 'C'
ELSE 'P'
END
SELECT @Var -- Do real sql-statement here
SET @counter = @counter + 1
END
澄清一下,真正的 sql 语句是这样的:
INSERT INTO MyTable
SELECT A, B, @Var FROM AnotherTable WHERE ExportStatus = 'F'
【问题讨论】:
-
这确实取决于您尝试执行的
real sql。通常,您应该能够避免循环,但并非总是如此。如果这确实需要一个循环,那么你所拥有的就很好。或者,您可以考虑使用FAST_FORWARD READONLY Cursor并使用它循环输入数据。
标签: sql arrays tsql while-loop do-while