【问题标题】:output in query ( ColdFusion )查询中的输出 ( ColdFusion )
【发布时间】:2011-02-21 13:39:17
【问题描述】:

我想知道是否可以将输出数据放在查询中,例如我有一个查询:

<cfquery name="get_search_results" datasource="#dsn3#">SELECT * FROM SERVICE_GUARANTY_NEW WHERE SERIAL_NO = #get_service.PRO_SERIAL_NO#</cfquery>

和输出:

<cfoutput query="get_service">#get_service.PRO_SERIAL_NO#</cfoutput>

您可以看到我在查询中插入了输出,但它不起作用,我该如何以正确的方式放置它?谢谢帮忙!

以防万一get_service输出查询:

<cfquery name="get_service" datasource="#dsn3#">
    SELECT * FROM SERVICE WHERE SERVICE_ID = #attributes.action_id#
</cfquery>

【问题讨论】:

    标签: database coldfusion


    【解决方案1】:

    要回答您的问题:您必须为此使用 cfqueryPARAM。如果 Serial_NO 数据类型是 Varchar,它将如下所示:

    <cfquery name = "get_search_results" dataSource = "#dsn3#">
        SELECT * 
        FROM SERVICE_GUARANTY_NEW
        WHERE SERIAL_NO = <cfqueryPARAM value = "#get_service.PRO_SERIAL_NO#"
        CFSQLType = 'CF_SQL_VARCHAR'> 
    </cfquery>
    

    但我认为最好将两个sql查询“get_search_result”和“get_service”合并到一个sql中:

    SELECT *
    FROM SERVICE_GUARANTY_NEW
    WHERE SERIAL_NO IN (
      SELECT PRO_SERIAL_NO 
      FROM SERVICE 
      WHERE SERVICE_ID = #attributes.action_id#
    )
    

    使用子查询比在新查询中重用一个查询的有问题的结果要快。

    【讨论】:

      【解决方案2】:

      我想你想试试这样的:

      <cfquery name="get_service" datasource="#dsn3#">
          SELECT #carrythroughVar# as carryThroughVar, * FROM SERVICE WHERE SERVICE_ID = #attributes.action_id#
      </cfquery>
      

      类似于你可以做select 1的方式

      这是未经测试的。

      【讨论】:

      • 谢谢,但实际上我试图将输出代码插入到 get_search_results 查询中,carrythroughvar 是什么意思?
      • 好吧,我认为查询结果是不可更改的。所以如果你真的需要在结果中插入一些东西,你应该设置一个循环,在添加数据时将查询的每条记录复制到一个结构中。然后你将遍历结构而不是查询。不要担心carrythroughvar,现在,对于您想放入查询中并在结果中显示的任何数据,这是我的名字。但我认为使用结果的结构副本是您现在想要的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2013-02-08
      • 2015-02-06
      • 1970-01-01
      相关资源
      最近更新 更多