【问题标题】:Oracle APEX_COLLECTIONS equivalent in Oracle PL/SQL alone仅在 Oracle PL/SQL 中等效的 Oracle APEX_COLLECTIONS
【发布时间】:2019-12-25 17:15:18
【问题描述】:

我正在使用 Oracle 11g R2。

我纯粹是在后端单独使用 PL/SQL 工作,我需要重写在 Oracle APEX v4.2 中使用/调用 APEX_COLLECTIONS 的所有 PL/SQL 代码。

由于我无法在没有 Oracle APEX 的情况下在 PL/SQL 中重用 APEX_COLLECTION API,请大家告知在普通 PL/SQL 中 APEX_COLLECTIONS 的等价物是什么?

我可能需要最多 50 个字符的列。

我在考虑全局临时表,但不确定这将如何工作。

【问题讨论】:

    标签: plsql collections oracle11g oracle-apex


    【解决方案1】:

    全局临时表是 APEX_COLLECTIONS 在 apex 环境中尝试模仿的特性。这是因为 apex session 与 oracle 数据库 session 不同。

    在 PL/SQL 中实现它的方式取决于您当前的用户需求。因此,如果您的数据库会话对于所有请求都是持久的,那么您可以(也许)使用带有 ON COMMIT PRESERVE ROWS 子句的全局临时表。

    但是不能说widthout请求细节。希望对你有帮助。

    Apex 集合结构为:Apex Documentation

      COLLECTION_NAME   NOT NULL VARCHAR2(255)
      SEQ_ID            NOT NULL NUMBER 
      C001              VARCHAR2(4000)
      C002              VARCHAR2(4000)
      C003              VARCHAR2(4000)   
      C004              VARCHAR2(4000)   
      C005              VARCHAR2(4000)  
      ...
      C050              VARCHAR2(4000)
      N001              NUMBER
      N002              NUMBER
      N003              NUMBER
      N004              NUMBER
      N005              NUMBER     
      CLOB001           CLOB
      BLOB001           BLOB  
      XMLTYPE001        XMLTYPE
      MD5_ORIGINAL      VARCHAR2(4000)  
    

    【讨论】:

    • 仅供参考,数据库会话对于所有请求都是持久的,所以 GTT 应该没问题。我唯一的附加问题是,我认为我需要确保 GTT 定义已经存在,如何允许在 GTT 中使用不同的列名?
    • @tonyf APEX_COLLECTION 有通用列,但没有可变列。我将编辑响应以添加结构。然后你可以像这样创建一个新的结构。你应该明白没有确切的替换,你必须在这里做一些重构(我认为)。
    猜你喜欢
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    相关资源
    最近更新 更多