代码之家  ›  专栏  ›  技术社区  ›  PiC

顶点替换字符串消失

  •  1
  • PiC  · 技术社区  · 6 年前

    我正在ORACLE 12.1上运行APEX 5.1。

    我有大约80个APEX类似的应用程序在同一个数据库上运行-每个应用程序都使用相同的替换字符串:CLIENT\u ID及其自身的值(存储应用程序的代码名)。 :CLIENT\u ID通过“V”函数使用:V('CLIENT\u ID')调用数据库上视图和包的共享框架的所有应用程序。

    在其中一个应用程序中,其中一个交互式报告意外失败,但未设置:CLIENT\u ID。其他应用程序中的所有其他页面或类似页面都可以很好地工作。

    • 令人惊讶的是,如果我从dual添加一个具有1行的自然连接,它就可以正常工作了!但只有当它是自然连接,并且只有当我选择一个函数的值来读取其他APEX替换变量时。
    • 如果我通过添加“自然连接(从双重中选择1)”来更改它,它将继续失败。
    • 重新编译使用:CLIENT\u ID的视图没有帮助。
    • 运行SQL形成失败的视图没有帮助。
    • 对SQL的某些更改形成了失败的视图帮助(但提供了错误的数据,因此无法解决问题)
    • DBMS\u RESULT\u缓存。刷新没有帮助
    • ALTER SYSTEM FLUSH BUFFER\u缓存没有帮助
    • ALTER SYSTEM FLUSH SHARED\u池没有帮助

    有没有人能给我一些提示(除了跳转数据库)我可以做些什么来进行更多的调查?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Mark Stewart    6 年前

    可能是视图正在调用标记为 deterministic 实际上函数正在引用 V('CLIENT_ID') 在规范中;使其不确定性。

    看见 PL/SQL Function Definition 寻找确定性,特别注意

    不要为其结果取决于会话变量或架构对象状态的函数指定确定性

        2
  •  1
  •   PiC    6 年前

    这是解释计划随时间变化的结果。问题的根本原因如下所述: When "PARTITION LIST SUBQUERY" is in the execution plan something (a bug?) de-instantiates the package

    推荐文章