从 PL/SQL 访问 Oracle Apex 应用程序设置
Access Oracle Apex Application Settings from PL/SQL
之后创建了一个值为 bar
的 apex 应用程序设置 FOO
当我尝试从 SQL Workshop > SQL Commands
页面访问设置时,我看到
Requested Application Setting #FOO# is not defined
。这是 SQL 命令我是 运行 检索值:
declare
l_value varchar2(4000);
begin
l_value := APEX_APP_SETTING.GET_VALUE( p_name => 'FOO');
dbms_output.put_line(l_value);
end;
知道为什么这行不通吗?
由于您不是从 APEX 会话中执行代码,因此您需要创建一个 APEX 会话或将自己附加到现有的 APEX 会话,否则无法知道 workspace/application 获取设置的内容从。如果代码是来自页面内的 运行,那么您现有的代码将有效。
尝试执行下面的代码,但将您的 APP ID 和 PAGE ID 修改为您的 APEX 应用程序中的实际 app/page。用户名无关紧要。
DECLARE
l_value VARCHAR2 (4000);
BEGIN
apex_session.create_session (p_app_id => 100, p_page_id => 2, p_username => 'any_username');
l_value := APEX_APP_SETTING.GET_VALUE (p_name => 'FOO');
DBMS_OUTPUT.put_line (l_value);
apex_session.delete_session;
END;
如果您想尝试为 return 设置值构建函数,我建议构建这样的函数
CREATE OR REPLACE FUNCTION FN_APP_CONFIG (
p_setting_name APEX_190200.WWV_FLOW_APP_SETTINGS.NAME%TYPE,
p_app_id APEX_190200.WWV_FLOW_APP_SETTINGS.FLOW_ID%TYPE DEFAULT APEX_APPLICATION.g_flow_id)
RETURN APEX_190200.WWV_FLOW_APP_SETTINGS.VALUE%TYPE
IS
l_value APEX_190200.WWV_FLOW_APP_SETTINGS.VALUE%TYPE;
BEGIN
SELECT VALUE
INTO l_value
FROM APEX_190200.WWV_FLOW_APP_SETTINGS
WHERE flow_id = p_app_id AND name = p_setting_name;
RETURN l_value;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN NULL;
WHEN TOO_MANY_ROWS
THEN
RETURN NULL;
END;
/
bar
的 apex 应用程序设置 FOO
当我尝试从 SQL Workshop > SQL Commands
页面访问设置时,我看到
Requested Application Setting #FOO# is not defined
。这是 SQL 命令我是 运行 检索值:
declare
l_value varchar2(4000);
begin
l_value := APEX_APP_SETTING.GET_VALUE( p_name => 'FOO');
dbms_output.put_line(l_value);
end;
知道为什么这行不通吗?
由于您不是从 APEX 会话中执行代码,因此您需要创建一个 APEX 会话或将自己附加到现有的 APEX 会话,否则无法知道 workspace/application 获取设置的内容从。如果代码是来自页面内的 运行,那么您现有的代码将有效。
尝试执行下面的代码,但将您的 APP ID 和 PAGE ID 修改为您的 APEX 应用程序中的实际 app/page。用户名无关紧要。
DECLARE
l_value VARCHAR2 (4000);
BEGIN
apex_session.create_session (p_app_id => 100, p_page_id => 2, p_username => 'any_username');
l_value := APEX_APP_SETTING.GET_VALUE (p_name => 'FOO');
DBMS_OUTPUT.put_line (l_value);
apex_session.delete_session;
END;
如果您想尝试为 return 设置值构建函数,我建议构建这样的函数
CREATE OR REPLACE FUNCTION FN_APP_CONFIG (
p_setting_name APEX_190200.WWV_FLOW_APP_SETTINGS.NAME%TYPE,
p_app_id APEX_190200.WWV_FLOW_APP_SETTINGS.FLOW_ID%TYPE DEFAULT APEX_APPLICATION.g_flow_id)
RETURN APEX_190200.WWV_FLOW_APP_SETTINGS.VALUE%TYPE
IS
l_value APEX_190200.WWV_FLOW_APP_SETTINGS.VALUE%TYPE;
BEGIN
SELECT VALUE
INTO l_value
FROM APEX_190200.WWV_FLOW_APP_SETTINGS
WHERE flow_id = p_app_id AND name = p_setting_name;
RETURN l_value;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN NULL;
WHEN TOO_MANY_ROWS
THEN
RETURN NULL;
END;
/