运行 一个 cfquery 代码块内的多个查询

Running multiple queries inside one cfquery code block

数据库:MSSQL 2008
CF 版本:9

<cfquery name="rsData" datasource="#request.dsn#">
SELECT GETDATE() AS CurrentDateTime1
SELECT GETDATE() AS CurrentDateTime2
</cfquery>
<cfoutput query="rsData">  
    #rsData.CurrentDateTime1#
    #rsData.CurrentDateTime2#
</cfoutput>
<cfdump var="#rsData#">

我希望能够输出#rsData.CurrentDateTime2#,但我遇到了一个硬错误:

Element CURRENTDATETIME2 is undefined in rsData

关于为什么的任何想法?是否需要启用 CFAdmin 设置?代码的其他区域也可以正常工作,所以我有点困惑。任何有关在哪里寻找解决此问题的建议将不胜感激。

** 根据 LEIGH 的回答更新,让我返回并查看我的错字 ** 这只是我最终尝试做的事情的一个肮脏的例子,可能行不通。

declare @start  DATETIME, @end DATETIME
    set @start = (
        select max(date) DTM
        from TABLE)
        SET @lowStart_Search = dateadd(year,-1,@highStart_Search)

        SELECT COLUMN1, COLUMN2  
        WHERE column3 <= @start  
        AND   column3 >= @end

There are other areas of the code where this works just fine

这似乎不太可能。其他查询必须有所不同。

这与多个 SQL 语句本身无关,而是这些语句生成了多少结果集。 CFQuery 只能 returning 单个 resultset。上面的 SQL 生成多个结果集:

  • 结果集 1:SELECT GETDATE() AS CurrentDateTime1
  • 结果集 2:SELECT GETDATE() AS CurrentDateTime2

请注意,如果您在 SSMS 中 运行 它会生成两个结果网格,而不是一个?

第一个结果

CurrentDateTime1
------------------
October, 05 2015 16:36:31
(1 row affected)

第二个结果

CurrentDateTime2
------------------
October, 05 2015 16:36:31
(1 row affected)

CFQuery 标签只会 return 第一个结果。其余的将被忽略。因此,为什么 CurrentDateTime2 是未定义的。

如果需要,您当然可以将 SQL 修改为 return 这两个值。例如,return 它们作为单个结果集的两个单独的

 SELECT GETDATE() AS CurrentDateTime1
      , GETDATE() AS CurrentDateTime2

还有其他选项,具体取决于最终目标(从简化示例中看不清楚)。然而,再次 cfquery 只会 return 一个结果。如果您确实需要多个结果集,则必须改用 cfstoredproc