读取文件内容后设置变量值

时间:2014-03-21 03:21:21

标签: coldfusion

我有一个非常大的查询,从3个不同的页面调用。 我没有在所有3个cfm文件中编写相同的查询,而是试图找到另一种方法来将查询(以及#variable(s)#)保存在Query.cfm文件中。

Query.cfm示例:

SELECT *
    FROM A
    WHERE TRADE_DATE  BETWEEN to_date('#f_startDate#','dd/mm/yyyy') AND to_date('#f_endDate#','dd/mm/yyyy')

变量:#f_startDate#和#f_endDate#

然后我读取文件内容,将其存储在变量中,并将#variable(s)#替换为值,以便从每个页面运行该函数。

调用页面(到目前为止无效的代码):

<cffile action = "read" file = "#ExpandPath( './Query.cfm')#" variable = "Query">
<cfset Query = #ReplaceList(Query,"#f_startDate#,#f_endDate#", "01/01/2000,01/01/2002")#>   
<cfquery name="Q_DailyPrice" datasource="#f_datasource#">
    #PreserveSingleQuotes(Query)#
</cfquery>

如何将变量值设置为字符串?

有关每页的更多详情:

  1. 返回要加载图表的查询的JSON

  2. 用于在xls中生成查询数据

  3. 进一步用于生成查询数据(QoQ)的子集以创建表格。

  4. 数据库:Oracle

1 个答案:

答案 0 :(得分:2)

您的选择包括:

  1. 将查询放入.cfm模板并使用cfinclude
  2. 访问它
  3. 将查询放入.cfm文件中的用户定义函数。然后cfinc包含文件并调用函数。
  4. 将查询放入.cfc文件中的用户定义函数。然后,您可以使用cfinvoke运行该函数,也可以创建一个对象,然后调用该函数。
  5. 也可能有其他选择。我建议看看我建议的三个,并确定哪一个最符合你的需求。

    无论使用哪种方法,ColdFusion都有一个parsedatetime函数,可以将字符串转换为日期对象。使用这些可能比oracle的to_date函数更快。你必须测试看看。无论如何,出于各种原因使用cfqueryparameter。

    另外,小心使用oracle之间。其日期字段包括时间组件。如果您的任何记录中有一个记录,则使用

    更安全
    where trade_date >= YourStartDate
    and trade_date < TheDayAfterYourEndDate