使用程式產生 page url

使用套件函數自動地產生 page url.

Use Case

想要產生一個指向特定頁面的 URL,並且在 URL 中包含特定的頁面項目值。

例如: 在報名成功的 email 中,提供一個指向報名頁面的 URL, URL 中帶報名的 ID。當使用者點擊此 URL 時,可以直接跳轉到報名頁面,並且自動填入報名的 ID。

原理

Oracle APEX 提供了 apex_page.get_url 函數,可以用來產生指向特定頁面的 URL。此函數可以接受頁面編號、頁面項目及其值等參數。

完整的 apex_page.get_url 函數說明參考 43.4 GET_URL Function, API Reference, Oracle Apex R24.1

範例

應用程式的報名頁面編號為 11,報名的主鍵放在 P11_ID 頁面項目中。

使用以下 PL/SQL 程式碼來產生指向報名頁面的 URL,並將其存入 P11_SIGNUP_URL 頁面項目中。

declare 
  l_url varchar2(5000);
  l_host varchar2(200) := 'https://apex.oracle.com';
begin
  l_url := apex_page.get_url(
    p_page => 11,
    p_items => 'P11_ID',
    p_values => :P11_ID
);
  :P11_SIGNUP_URL := l_host || l_url;
end;

apex_page.get_url 函數中,p_page 參數指定了目標頁面的編號,p_items 參數指定了要包含在 URL 中的頁面項目,p_values 參數則是這些項目的值。

雖然我們沒有指定 p_applicationp_session 參數,此函數會自動使用當前應用程式 ID (:APP_ID) 和當前會話 ID (:APP_SESSION)做為預設值。

因此, 此函數產生的 URL 相當於以下的 friendly URL:

/pls/r/<workspace_id>/<app_name>/<page_name>?P11_ID=<value>&session=<session_id>

apex_page.get_url 函數的 URL 並沒有包含 hostname, 所以程式中手動串接 hostname (l_host) 至 l_url 變數中, 產生完成的 URL.

此 PL/SQL 產生的 URL 如下:

Last updated

Was this helpful?