我越來越感到困惑的計算點,如before_header和after_header等計算未返回預期的結果
我有一個計算,其需要採取一個頁面項的值,然後返回作爲結果。
計算是低於PL/SQL函數體:
DECLARE
v_response varchar2(1500);
BEGIN
IF :P4_RENEWAL_REQUIRED = 'Yes' THEN
v_response := 'According to Register, a license renewal WILL BE required to maintain this registration. Please choose whether you agree or disagree with this statement.';
ELSE
v_response:='Forget about it...';
END IF;
return v_response;
END;
頁面項目:P4_RENEWAL_REQUIRED是計算領域是一個SQL值,這依賴於數據庫填充頁面項目P4_RENEWAL_NOT_REQUIRED。它只是將「是」變爲「否」,將「否」變爲「是」。
SELECT (CASE WHEN V('P4_RENEWAL_NOT_REQUIRED')='Yes' Then 'No' ELSE
CASE WHEN V('P4_RENEWAL_NOT_REQUIRED')='No' Then 'Yes' ELSE '??' END END) FROM DUAL
我的計算不會返回結果。 P4_RENEWAL_REQUIRED值將顯式爲'是',但計算結果將返回'忘記它'。如果我進入頁面編輯視圖,然後再次運行頁面 - 該值顯示正確的值
'根據註冊表,將需要許可證續訂來維護此註冊。請選擇您是否同意此聲明。'
這意味着計算在舊的會話值P4_RENEWAL_REQUIRED上運行。
我不太確定計算點與此有什麼關係,但是如果我通過在Header上執行的Fetch Row過程返回數據,然後填充區域中的字段(例如P4_RENEWAL_NOT_REQUIRED)和那麼P4_RENEWAL_REQUIRED正在計算....如何獲得一個計算來填充另一個區域中的一個字段,該字段對現有頁面項目有依賴性?
我已經嘗試使我的計算在頁腳之前,區域之前,頁腳之後執行,但沒有任何工作。
我不確定所有Before Footer的工作方式,或者當所有這些都呈現在服務器端時,頁面項目如何在哪個點上填充。
例如,如果我將我的計算設置爲計算「After Region」,那麼在區域中使用該值是否爲時已晚,因爲這些區域已經被渲染?
如果我需要在我的計算中計算一個值以在區域中使用它並使用「Before Region」計算點,則需要使用該頁面項目與該頁面項目相關聯的基礎查詢或者我太早了。
任何幫助表示讚賞。
不完全清楚:P4_RENEWAL_NOT_REQUIRED的來源是什麼?設置爲「始終」或「僅在會話狀態爲空時」? – Tom
它始終設置爲 – smackenzie
對不起,可能尚未明確聲明:此項目的來源類型,它設置了什麼? SQL查詢? – Tom