查询中的输出(ColdFusion)

时间:2011-02-21 13:39:17

标签: database coldfusion

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

<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>

2 个答案:

答案 0 :(得分: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#
)

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

答案 1 :(得分:0)

我想你想尝试这样的事情:

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

类似于select 1

的方式

这是未经测试的。

HTH