【发布时间】:2015-08-26 17:02:58
【问题描述】:
希望你能帮到我
我有一个客户,我为其开发应用程序,我的开发需要从 Oracle 10g 升级到 Oracle 11g。当我进行如此重大的升级时,我决定升级所有东西(即 apex、tomcat 和 listener,以及 11g),不幸的是,这导致了一些错误,我将在下面详细说明
我的旧环境是 Oracle 数据库 10.2g XE、Apex 4.0.1、Tomcat 7.0.5、Apex 侦听器 1.1.3。 我的新环境是 Oracle DB 11.2g XE、Apex 4.2.4、Tomcat 7.0.50 和 Apex Listener 2.0.5。
一切都很顺利,直到我通过尝试执行 HTP.P 来尝试使用 HTP 包。在执行 HTP.P 时,应该通过嵌入在代码中的 JavaScript 打开一个窗口,但是除了页面重新加载本身之外什么都没有发生。我尝试通过单击按钮执行的代码如下所示
DECLARE
numf NUMBER;
x VARCHAR2(250) := 'window.open("f?p=102:0:&SESSION:PRINT_REPORT=Revised%20Stock%20Req%20Print")';
y VARCHAR2(250) := 'alert("No unprinted stock items found - cannot execute stock print request")';
z VARCHAR2(250) := ' window.location.href= "f?p=102:40:&SESSION"';
BEGIN
select count(*) into numf from transaction_detail where transaction_header_no in (select transaction_code from transaction_header where authority_batch_no = :P40_AUTH_BATCH_NUMBER) and transaction_source_table = 'STOCK_ITEMS' and transaction_total > 0 and Date_Printed is NULL;
if numf > 0 then
update transaction_detail set Req_Printed='Y', Date_Printed=:P40_TIMESTAMP where transaction_header_no in (select transaction_code from transaction_header where authority_batch_no = :P40_AUTH_BATCH_NUMBER and auth_check_back='Y') and transaction_source_table = 'STOCK_ITEMS' and Date_Printed is NULL;
COMMIT WORK;
htp.script (x, 'Javascript');
htp.script (z, 'Javascript');
ELSE
htp.script (y,'Javascript');
htp.script (z, 'JavaScript');
END IF;
END;
如您所愿,如果事务数 (numf) > 0,则意味着打开一个带有报告的新窗口,如果不是,则意味着显示消息。然而,它只是重新加载页面而不显示消息或任何内容。我查看了显示正在尝试执行的代码的 Apex 调试(并且调试没有错误),这让我认为我需要设置一些东西才能运行包。
我已经加载了 HTP 和 UTL_HTTP 包(通过 @utlhttp.sql 和 @pubht.sql 命令)我已经在 HTP 和 UTL_HTTP 包上向架构和 APEX_040200 用户授予了所有权限,但是似乎没有任何权限打开窗户。没有对监听器进行其他配置(除了端口、数据库 sid 等的基本配置)。
任何帮助或建议将不胜感激。
亲切的问候, DazzaRPD
编辑:代码在 10.2g 中使用 htp.p 而不是 htp.script,在 11g 中我使用 htp.p 对其进行了测试,但无济于事。一旦按下按钮,代码就会执行,并且位于 Apex 的处理分支中。代码本身在“提交时,计算和验证之后”执行。页面重新加载不是由 window.location.href 完成的
【问题讨论】:
标签: oracle tomcat oracle11g oracle-apex