【问题标题】:T-SQL : use an array like in a while loopT-SQL:在while循环中使用数组
【发布时间】: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


【解决方案1】:

简单使用:

INSERT INTO MyTable
    SELECT * FROM AnotherTable WHERE ExportStatus 
        IN (SELECT 'C' UNION ALL SELECT 'P')

【讨论】:

    【解决方案2】:

    只需将其插入表格即可。

    设置操作在 SQL 中执行得更好 并且可以将数组放入表中,并可以对表进行操作。

    【讨论】:

      猜你喜欢
      • 2010-10-01
      • 2018-10-07
      • 2020-12-01
      • 2015-02-20
      • 1970-01-01
      • 2010-09-14
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多