在一个cfquery代码块中运行多个查询

时间:2015-10-05 15:23:52

标签: sql-server-2008 coldfusion coldfusion-9

DB: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&#39;答案让我回去看看我的TYPO ** 这只是我最终尝试做的一个肮脏的例子,可能不起作用。

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

1 个答案:

答案 0 :(得分:1)

  

代码的其他区域可以正常使用

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

这不是关于多个SQL语句本身,而是这些语句生成多少个结果集。 CFQuery只能返回 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标记只返回第一个结果。其余的将被忽略。因此,为什么CurrentDateTime2未定义。

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

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

还有其他选择,取决于最终目标(从简化示例中不清楚)。但是,cfquery只会返回一个结果。如果您确实需要多个结果集,则必须改为使用cfstoredproc