在Oracle中,从单个结构中的多个查询返回数据

在Oracle中,从单个结构中的多个查询返回数据,oracle,stored-procedures,Oracle,Stored Procedures,我必须创建一个屏幕,其中包含使用复杂连接等从多个不同表获取的数据。只有一个来自UI的服务调用来获取数据,这些数据将以JSON返回 这些就是我想到的方法 从服务层执行多个查询,填充一个对象并将JSON对象发送回 创建临时表,在更新原始数据时填充所需数据,并在显示上述屏幕时查询临时表 对我来说,这两种方法都没有说服力。我不希望从服务层多次调用数据库,也不希望为此目的创建临时表。相反,我想有一个存储过程,它将执行多个查询并返回一个自定义结构,该结构可以映射到Java对象,而Java对象又将返回到UI层

我必须创建一个屏幕,其中包含使用复杂连接等从多个不同表获取的数据。只有一个来自UI的服务调用来获取数据,这些数据将以JSON返回

这些就是我想到的方法

  • 从服务层执行多个查询,填充一个对象并将JSON对象发送回
  • 创建临时表,在更新原始数据时填充所需数据,并在显示上述屏幕时查询临时表
  • 对我来说,这两种方法都没有说服力。我不希望从服务层多次调用数据库,也不希望为此目的创建临时表。相反,我想有一个存储过程,它将执行多个查询并返回一个自定义结构,该结构可以映射到Java对象,而Java对象又将返回到UI层


    这可能吗?

    根据您的服务层、数据库层和数据库开发人员的功能,您有几种选择

  • 创建一个具有多个输出
    sys\u refcursor
    参数的存储过程;通过游标将所需的数据传递到服务层;让服务层构建JSON对象并将其发送到GUI
  • 创建一个具有单个输出
    sys\u refcursor
    参数的存储过程,该参数将包含带有所需子结构的嵌套refcursor列;让服务层从中构建JSON对象并将其发送到GUI
  • 创建一个用XML构建完整复杂结构的存储过程;让服务层将XML转换为JSON并将其发送到GUI
  • 创建一个以JSON(Oracle 12.1.0.2)构建完整复杂结构的存储过程,并将其通过服务层传递给GUI
  • 创建一个用XML构建复杂结构的视图;让服务层为您需要的特定行查询视图,并将XML转换为JSON
    是的,这是可能的。您想做什么取决于性能是否可以接受。存储过程是一个很好的选择。如果没有涉及DML语句,那么最好使用函数,当然没有这样的规则。谢谢。听起来不错。让我试试这些,然后回复。