我继承了一个大型的传统ColdFusion应用程序.这里有数百个<cfquery>某些sql #variable#</ cfquery>语句,需要按照以下方式进行参数化:<cfquery>这里有一些sql <cfqueryparam value ="#variable#"/> </ cfquery>
如何以编程方式添加参数化?
我曾考虑过编写一些正则表达式或sed/awk'y类型的解决方案,但似乎有人在某个地方解决了这个问题.为自动推断sql类型而获得的奖励积分.
我正在进行一个查询,其中有12个条目名为"choice_1"到"choice_12".我希望能够根据它在循环中的位置动态调用单个选项.所以这是查询:
<CFQUERY DATASOURCE="tr3" NAME="qryUserMatchPref"> 
    SELECT *
FROM UsrMatchPrefTR2
WHERE session = #sess# AND site = #siteFirst# AND user_id = #tempUser#
</CFQUERY>
让我们说循环是第三次运行,我想检查choice_3,理论上我想要做这样的事情.
<cfset combined = "choice_" & counterChoice>
<cfset tempMatch = qryUserMatchPref.#combined#>
如果counterChoice等于3,我当然会查询choice_3,而不是"组合"列中的内容[在这种情况下不存在].有没有办法在coldfusion中执行此操作,或者我注定要创建一系列非常繁琐的if语句?d:
我正在尝试查询simliar:
 <CFQUERY Name=GetResults Database=Rent> SELECT * FROM Units, Tenants
  WHERE Units.UnitID=Tenants.UnitID</CFQUERY>
 <CFOUTPUT Query=GetRetults>
 #UnitName# #TenantID#<BR>
 </CFOUTPUT>
这就是结果的样子
101 57
101 199
101 204
101 590
102 85
102 97
103 44
我只想为TenantID的每个单元获得一个结果,我希望它是最高的租户ID.换句话说,我希望结果如下:
101 590
102 97
103 44
我不知所措.我已经尝试在Query中创建一个循环,但还没有成功.我知道这一定很简单,但我无法弄清楚.我很感激任何建议
美好的一天,
让我来描述我的问题:
场景:
问题:
方案:
我想做的是
<cfloop array="#LOCAL.someArray" index="LOCAL.aString">
    <cfset LOCAL.queryName = "uniqueQueryName_" & LOCAL.aString />
    <cfquery name="#LOCAL.queryName#" datasource="db" cachedwithin="#CreateTimeSpan(1,0,0,0)#">
        SELECT count(*) AS c FROM someTable
    </cfquery>
    <cfdump var="#LOCAL.queryName#" />
</cfloop>
这是可能的,还是有更好的方法呢?
编辑
这适用<cfloop query="LOCAL.queryName">但不是我尝试的时候<cfset ArrayAppend(LOCAL.returnArray, LOCAL.queryName.c) />
我收到错误;列名称"阶段"无效.我已经尝试过我能想到的每一种排列.
<cfargument name="locationFilter" default="" />
    <cfargument name="educationFilter" default="" />
    <cfargument name="workFilter" default="" />
    <cfargument name="diversityFilter" default="" />
    <cfargument name="phaseFilter" default="" />
    <cfquery name="QMentors" datasource="#request.dsn_live#">
        SELECT  
        (case 
        when datepart(year,getdate())-cast(yearstarted as integer) > 29 then '5'
        when datepart(year,getdate())-cast(yearstarted as integer) > 13 then '4'
        when datepart(year,getdate())-cast(yearstarted as integer) > 5 then '3'
        when datepart(year,getdate())-cast(yearstarted as integer) > 1 then '2'
        else '1'
        end) as phase, *
    FROM mentors 
    WHERE 0=0
    AND mentortype='mentor' 
    AND approved='true' 
    AND active='true' 
    AND mentorcat LIKE '%general%' 
        <cfif arguments.locationFilter …我知道你可以得到你的查询中返回了多少项的计数,但是......问题:是否有可能得到一个recordcount具有特定值的行,例如......
<cfset totalReturned = myquery.recordcount>
<cfset totalReturnedComplete = myquery.recordcount (where status = "Complete")>
我知道上面的内容不起作用,但我正在寻找类似上面代码的内容.
我有一个保存的XML文件,它是7.1mb,包含1000多个属性和这些属性的所有信息.我的cfscript解析然后将属性以及功能和图像URL插入到属性表中.
但是,该过程通常在它通过250条记录之后就会爆炸,然后给出了这个错误:
 The request has exceeded the allowable time limit Tag: CFQUERY 
我在我的cfquery标签中放置了9000000的超时值,但没有做任何事情.我不知道还有什么可以解决这个问题.
我想创建一个函数,该函数将遍历任意查询并根据任意列名在另一个表中执行插入。
例如,这里的想法是输出
(data, data, data...)
(data, data, data...)
最终,我将执行插入查询。现在,我只想输出行。
编辑:我不能只是INSERT/SELECT因为产品数据和开发数据在不同的服务器上。因此,我必须首先将产品服务器上的表中的数据收集到CF查询对象中,然后遍历它并插入开发服务器上的表中。
码:
<cffunction name="copyProdToDev">
    <cfargument name="devDatasource" >
    <cfargument name="prodDataSource" type="string">
    <cfargument name="devTableName" type="string">
    <cfargument name="prodTableName" type="string">
    <cfargument name="dateColumnName" default="none">
    <cfquery name="ProdData" datasource="#prodDatasource#" timeout="60">
        SELECT *
        FROM #prodTableName#
    </cfquery>
    <cfset columnNames = ProdData.getColumnNames()> 
    <cfset numColumns = ArrayLen(columnNames)>
    <cfloop query="#ProdData#">
        (
        <cfloop index="colNumber" from="1" to="#ArrayLen(columnNames)-1#">
            <cfoutput><dynamic column name for colNumber>,</cfoutput>
        </cfloop>
        <cfoutput><dynamic column name for numColumns></cfoutput>
        )<br />
    </cfloop>
</cffunction>
我遇到一个问题,我正在使用 Ben Nadel 的 QueryAppend.cfc 连接来自两个不同数据源的两个记录集。我得到的数据是正确的,但数据的顺序不是预期的。组合结果集的排序如下,所有结果都以小写字母开头附加到记录集的底部:
我期待(并且需要)以下类型的排序:
苹果
艺术
瓶子
男生
猫
硬币
镖
狗
代码如下:
<!---Calling Template--->
<cfquery name="getDataSet1" datasource="datasource1">
SELECT param1
FROM table1
</cfquery> 
<cfquery name="getDataset2" datasource="datasource2">
 SELECT param1
FROM table2
</cfquery> 
<cfscript>
// Create object
 TheUnionObject = createObject("component", "cfc/QueryAppend");
 // Call the function
myUnionResult = TheUnionObject.QueryAppend(getDataSet1, getDataSet2);
</cfscript> 
<!---Dump results--->
<cfdump var="#myUnionResult#">
 <!---QueryAppend.cfc--->
 <cfcomponent>
 <cffunction name="QueryAppend" access="public" returntype="query" 
 output="false"
 hint="This takes two queries and appends the second one to the first one. 
  Returns the resultant …cfquery ×10
coldfusion ×9
asynchronous ×1
case ×1
cfc ×1
cfloop ×1
cfqueryparam ×1
coldfusion-9 ×1
loops ×1
mysql ×1
qoq ×1
refresh ×1
sql ×1
sql-server ×1
xml ×1