2009-06-03 50 views
0

我需要處理一些有點複雜的參數驗證要求。我們正在使用針對Oracle 8.1數據庫的SQL報告2005。Reporting Services中的必需參數 - 從Oracle返回錯誤

用戶超過一年 要麼FooParm必須提供 或 代碼必須提供和Codestart的和CodeEnd之間的差必須小於1001

在僞碼格式必須不選擇日期範圍更長

(dateStart and dateEnd DIFF < 1 year AND !=0) 

AND 

(
    (FooParm !=0) 
    OR 
    (CodeStart AND CodeEnd < 1001 AND CodeStart!='' AND CodeEnd!='') 
) 

從我看到的,實現這一目標的唯一方法是從自定義前端,但我們已經有一個,它不會被修改爲這個請求。

我想創建一個Oracle過程,將檢查並返回一個錯誤,指出問題。

是否會向用戶提出錯誤?我假設它只會寫入錯誤日誌,並且用戶將顯示默認的錯誤頁面。

我可能會返回一個記錄集中的相關錯誤信息。

還有其他想法嗎?我不是專業報道人員,所以我可能會說這一切都是錯誤的。

回答

1

我會想到對RAISE_APPLICATION_ERROR的調用會使它成爲用戶的方式嗎?

BEGIN 
    IF <your-parameter-validation> THEN 
     RAISE_APPLICATION_ERROR (
      num=> -20501, 
      msg=> 'Parameters are incorrect etc.'); 
    END IF; 

    <continue-your-code> 

    ... 

這個工作對我們,當我們在使用Crystal Reports調用PL/SQL函數....希望能爲你工作。

+0

工作得很好。 – Sam 2009-06-15 22:30:17