2010-06-07 70 views
0

最近,我更新了一個在客戶端(選擇,公式等)完成所有工作的Crystal Report,並更改了在服務器端完成的所有邏輯通過使用Oracle 11g數據庫的存儲過程。現在報告只用於顯示存儲過程的輸出,而沒有其他信息。我在這個主題上讀到的一切都表明,利用存儲過程應該會大大減少報表的運行時間,但從服務器檢索數據所需的時間仍然大致相同。我寫的存儲過程有問題嗎,還是Crystal Report本身存在問題?以下是存儲過程代碼以及定義所需的REF CURSOR的包。使用存儲過程提高Crystal Reports的性能

CREATE OR REPLACE 
PROCEDURE   SP90_INVENTORYDATA_ALL 
(
    invdata_cur IN OUT sftnecm.inv_data_all_pkg.inv_data_all_type, 
    dCurrentEndDate IN vw_METADATA.CASEENTRCVDDATE%type, 
    dCurrentStartDate IN vw_METADATA.CASEENTRCVDDATE%type 
) 
AS 
BEGIN 
    OPEN invdata_cur FOR 
    SELECT 
     vw_METADATA.CREATIONTIME, 
     vw_METADATA.RESRESOLUTIONDATE, 
     vw_METADATA.CASEENTRCVDDATE, 
     vw_METADATA.CASESTATUS, 
     vw_METADATA.CASENUMBER, 
     (CASE WHEN vw_METADATA.CASEENTRCVDDATE < dCurrentStartDate AND (
     (vw_METADATA.CASESTATUS is null OR vw_METADATA.CASESTATUS != 'Closed') OR 
     TO_DATE(vw_METADATA.RESRESOLUTIONDATE, 'MM/DD/YYYY') >= dCurrentStartDate) then 1 else 0 end) InventoryBegin, 
     (CASE WHEN (to_date(vw_METADATA.RESRESOLUTIONDATE, 'MM/DD/YYYY') BETWEEN dCurrentStartDate AND dCurrentEndDate) 
     AND vw_METADATA.RESRESOLUTIONDATE is not null AND vw_METADATA.CASESTATUS is not null then 1 else 0 end) CaseClosed, 
     (CASE WHEN vw_METADATA.CASEENTRCVDDATE BETWEEN dCurrentStartDate AND dCurrentEndDate then 1 else 0 end) CaseCreated 
FROM vw_METADATA 
WHERE vw_METADATA.CASEENTRCVDDATE <= dCurrentEndDate 
ORDER BY vw_METADATA.CREATIONTIME, vw_METADATA.CASESTATUS; 
END SP90_INVENTORYDATA_ALL; 

和封裝:

CREATE OR REPLACE PACKAGE inv_data_all_pkg 
AS TYPE inv_data_all_type IS REF CURSOR 
RETURN inv_data_all_temp%ROWTYPE; 
END inv_data_all_pkg; 
+0

你真的需要使用遊標嗎? – DOK 2010-06-07 20:22:34

+0

@DOK:IME,是的。 – 2010-06-07 20:23:15

+0

我們需要查看'VW_METADATA'的視圖語句 - 使用存儲過程只強調了實際查詢的差異。根據提供的內容,這意味着視圖內的內容不起作用。 – 2010-06-07 20:26:49

回答

0

如果數據庫服務器和Crystal服務器比沒有之間沒有延遲,改變其中的數據處理情況將不會有任何效果。特別是如果沒有大量的數據通過網絡傳輸。或者換句話說,由高性能網絡接口分隔的兩臺同樣快速的服務器,除非將數據處理移動到數據庫服務器,否則將顯着減少網絡上的數據量,這幾乎沒有什麼區別。

考慮調整查詢(包括另一個受訪者指出的)VW_METADATA的定義。

+0

我沒有設計視圖,但我只是看着DDL,它是一團糟。我相信它會解決問題。 – 2010-06-08 12:54:28

相關問題