Coldfusion 多個 query 合併
簡單的用法:
把多個 DB 查詢用 in memory 查詢 union 起來。
那如果是 LOOP 迴圈連續查詢的 query 呢?
那就讓 query name 不一樣就可以了,然後再用LOOP把query union 起來
<cfquery name="q1" datasource="store1" blockFactor="100">
select * from sales_lists where sale_date = '2013/05/02'
</cfquery>
<cfquery name="q2" datasource="store2" blockFactor="100">
select * from sales_lists where sale_date = '2013/05/02'
</cfquery>
<cfquery name="datesales" dbtype="query">
select * from q1
union
select * from q2
order by sale_employee
</cfquery>
把多個 DB 查詢用 in memory 查詢 union 起來。
那如果是 LOOP 迴圈連續查詢的 query 呢?
那就讓 query name 不一樣就可以了,然後再用LOOP把query union 起來
<cfloop from="1" to="#ListLen(employeelist)#" index="i">
<cfquery name="qresult#i#" datasource="db1">
select * from employee where employee_no = '#ListGetAt(i)#'
</cfquery>
</cfloop>
<cfquery name="combine" dbtype="query">
<cfloop from="1" to="#ListLen(employeelist)#" index="i">
select * from qresult#i#
<cfif i lt ListLen(employeelist)>union</cfif>
</cfloop>
</cfquery>
留言
我在windows 2000 Server底下安裝了coldfusion MX,安裝過程都很順利,但是當安裝完之後出了問題。也就是安裝完的當下會跳出一個coldfusion MX的administrator網頁,是呈現"Error Occurred While Processing Request"的錯誤訊息。一開始以為是IIS出了問題,後來檢查了ISAPI與CFIDE目錄的內容,發現也都沒問題,127.0.0.1也沒問題,唯獨很奇怪的一點就是,我在所有IIS目錄底下瀏覽其他副檔名都可以正常執行,但.cfm就是無法正常執行。
如果是administrator的路徑不能執行是否有檢查過資料夾下的權限Users是否有寫入/讀取/執行與特殊權限?
我記得"Error Occurred While Processing Request"下面還有一段錯誤描述,可以告訴我那個錯誤描述是...?
Error Occurred While Processing Request
Please Try The Following:
Check the CFML Reference Manual to verify that you are using the correct syntax.
Search the Knowledge Base to find a solution to your problem.
Browser Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Remote Address 127.0.0.1
Referer
Date/Time 04-十二月-13 02:17 下午
Stack Trace (click to expand)
java.lang.NoClassDefFoundError
at javax.crypto.Cipher.getInstance([DashoPro-V1.2-120198])
at coldfusion.compiler.TemplateReader.decrypt(Unknown Source)
at coldfusion.compiler.TemplateReader.(Unknown Source)
at coldfusion.compiler.NeoTranslationContext.getPageReader(Unknown Source)
at coldfusion.compiler.NeoTranslator.translateJava(Unknown Source)
at coldfusion.compiler.NeoTranslator.translateJava(Unknown Source)
at coldfusion.runtime.TemplateClassLoader$1.fetch(Unknown Source)
at coldfusion.util.LruCache.get(Unknown Source)
at coldfusion.runtime.TemplateClassLoader$TemplateCache.fetchSerial(Unknown Source)
at coldfusion.util.AbstractCache.fetch(Unknown Source)
at coldfusion.util.SoftCache.get(Unknown Source)
at coldfusion.runtime.TemplateClassLoader.findClass(Unknown Source)
at coldfusion.filter.PathFilter.invoke(Unknown Source)
at coldfusion.filter.ExceptionFilter.invoke(Unknown Source)
at coldfusion.filter.ClientScopePersistenceFilter.invoke(Unknown Source)
at coldfusion.filter.BrowserFilter.invoke(Unknown Source)
at coldfusion.filter.GlobalsFilter.invoke(Unknown Source)
at coldfusion.filter.DatasourceFilter.invoke(Unknown Source)
at coldfusion.CfmServlet.service(Unknown Source)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:241)
at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:527)
at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:198)
at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:348)
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:451)
at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:294)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
這個情形就我知道的解決法有3個方式,你可以朝這方向試著解決看看.
java stack 最後的錯誤是:java.lang.NoClassDefFoundError,像是呼叫使用的類別不相容或是錯誤.
1.有可能是windows版本的service pack不足引起,嘗試將windows 2000上到sp4.真的不行請嘗試安裝在windows 2003.
2.coldfusion 安裝不完整或是該版本有bug,請重新安裝或是更新版本(我不確定您使用的版本為何).
3.比較不太可能的:但是也注意一下,是否安裝JDK或JRE,如果有是否版本不相容導致?(一般而言adobe的coldfusion會內建JRE不需要額外安裝)
大家保持聯絡吧
上面的問題看起來是CF沒安裝成功,你用的WIN和CF都是十年前的版本,連原廠都不支援了,版本應該換新一點的吧~
所需要的資料最好是在同一個 datasource 會比較好,不然挺耗資源的 (可以用gettickcount 來觀察你的資料擷取所消耗的時間 ),當然現實情況會有意外(怪怪的老闆的怪怪的要求)
OK~大家保持聯絡~