WWV_FLOW_DYNAMIC_EXEC.PARSE_AS_USER在多个按钮和LOV上出现错误



将一个非常旧的应用程序升级到APEX 20.2后,除了少数页面中所有按钮和LOV在调用WWV_FLOW_DYNAMIC_EXEC.PARSE_AS_USER:时都会抛出两个错误中的一个之外,其他一切都出奇地好

Could not validate caller for user "" when parsing
select select 1 
from TD_PNART
could not validate env for schema "APEX_PUBLIC_USER":context=, parse_as_schema=,
parse_as_schema_override=,sgid=, curr_flow_sgid=994328456202381, flow_id=220,when parsing

我已经尝试了所有的方法,从更新授权方案,在每一条SQL中搜索可能已使模式用户过期的内容,重新创建对象,重新验证ORDS等,但每次都会出现错误,SQL Trace/APEX Trace没有提供进一步的信息。我在Google或Oracle支持上也找不到这个问题。

如何诊断这样的内部错误?

- error_backtrace: ----- PL/SQL Call Stack -----
object      line  object
handle    number  name
0x6d5e0d58       947  package body APEX_200200.WWV_FLOW_ERROR.INTERNAL_GET_ERROR
0x6d5e0d58      1015  package body APEX_200200.WWV_FLOW_ERROR.INTERNAL_ADD_ERROR
0x6d5e0d58      1407  package body APEX_200200.WWV_FLOW_ERROR.RAISE_INTERNAL_ERROR
0x6d5e0d58      1488  package body APEX_200200.WWV_FLOW_ERROR.RAISE_MASKED_INTERNAL_ERROR
0x825ab978       521  package body SYS.WWV_DBMS_SQL_APEX_200200.PARSE_AS_USER
0x73579878      1698  package body APEX_200200.WWV_FLOW_DYNAMIC_EXEC.PARSE_AS_USER
0x73579878      2378  package body APEX_200200.WWV_FLOW_DYNAMIC_EXEC.SELECT_INTO_I
0x73579878      2459  package body APEX_200200.WWV_FLOW_DYNAMIC_EXEC.SELECT_NUM
0x73579878      1263  package body APEX_200200.WWV_FLOW_DYNAMIC_EXEC.DO_ROWS_EXIST
0x8239fac8       290  package body APEX_200200.WWV_FLOW_CONDITIONS.STANDARD_CONDITION
0x851816e0        71  package body APEX_200200.WWV_FLOW_META_UTIL.IS_OK_TO_DISPLAY

Oracle的一位工程师能够解决这个问题,它有一个完全出乎意料的解决方案:

只是为了其他可能遇到相同情况的开发人员的利益问题问题是该页面仍然包含键入APEX中已取消支持的"带计算器的文本字段"5.0.在呈现这样一个页面项目后,剩余的页面呈现刚刚中断,导致了上述错误。我已提交bug#32828261,以最终删除该项目类型并将现有项目转换为文本字段。

解决方法:

手动将现有页面项目更新为文本字段。

select workspace, application_id, application_name, page_id, page_name, item_name
from apex_application_page_items
where display_as_code = 'NATIVE_TEXT_WITH_CALCULATOR'
order by workspace, application_id, page_id, item_name

最新更新