2013-04-23 32 views
1

是否有可能使用plsql獲取默認項目值?我有一個驗證,並在它失敗的情況下,我想重置項目的默認值。 我嘗試過使用apex_util.set_session_state('P_ITEM_NAME', null),但沒有任何明顯的效果。apex檢索默認項目值

如何檢索默認項目或重置項目本身?

回答

0

:P_ITEM_NAME := null;

這裏的區別是 「:」 項目的盈方。像這樣使用它可以訪問該項目。我相信不需要使用撇號。

如果這不適用於您的版本,請不要使用;。

所以,你可以使用:

:P_ITEM_NAME 

來獲取值。

+0

由於'set_session_state'接受項目的varchar2'名稱,因此撇號是必需的。從驗證器函數調用'set_session_state'沒有用,因爲它看起來會話狀態和項目值是相同的,如果我清除會話狀態項值也被清除。我有這樣的請求範圍。我找到了一個解決方案,但相當醜陋。 – 2013-04-23 18:47:07

0

我找不到任何函數會返回使用項目的默認值。不過,我可以使用默認項目設置來模仿這一點。當頁面出現驗證錯誤時,頁面進程不運行,因此我添加了條件頁面進程,與我的驗證執行相同的檢查,當這些檢查指示驗證失敗時,它只是清除項目狀態。

這很醜陋,因爲它需要複製檢查,而且似乎有必要通過所有需要此類重置機制的頁面複製幾乎相同的頁面控件。

2

創建頁面進程時,會出現一個名爲「顯示內聯驗證錯誤」的情況,這可能會有所幫助嗎?在此過程中,您可以將項目重置爲空,然後當頁面加載時,項目值將返回到其默認值。

UPD:

創建過程:

  • 過程點:在負荷前頭部

  • 條件:內嵌驗證錯誤顯示

  • 流程源:

    begin 
        for i in (
        select t.ITEM_DEFAULT, t.item_name 
        from apex_application_page_items t 
        where t.application_id = :APP_ID 
         and t.page_id = :APP_PAGE_ID 
    ) loop 
        apex_util.set_session_state(i.item_name, i.item_default); 
        end loop; 
    end; 
    

這會將所有頁面項目恢復爲默認值。 這個解決方案有些難看,但我不知道這個問題的另一個解決方案。

+0

但是當頁面有驗證錯誤時,進程不運行。 – 2013-04-24 18:00:46

+0

尋找更新 – NoGotnu 2013-04-25 07:15:35