【问题标题】:refcursor returning an object that contain list of all datarefcursor 返回一个包含所有数据列表的对象
【发布时间】:2015-12-04 17:18:30
【问题描述】:

我是pl/SQL新手,请帮我创建一个程序!

场景: 我有类别和子类别,每个类别和子类别都有一个描述。我希望该过程返回一个refcursor,其中包含一个包含level1 menu's 列表的对象列表,然后是基于父菜单的所有子菜单列表以及描述。

例子:

Mainmenu
|
|- menu1
       |--submenu1
       |--submenu2
|
|-menu2
       |--submenu1
       |--submenu2

Java 类定义:

class Menu{
    String desc;
    list<Menu> menu;
} 

我想在 Oracle pl/SQL 中有一个存储过程来填充 Java 中的对象。

请指导我 refcursor 返回一个包含所有需要数据的对象!

【问题讨论】:

  • 到目前为止你有什么代码?作为 PL/SQL 的新手,一切都很好,但是如果我们为您编写代码,您将不会学到任何东西……
  • 嗨,Phir,你是绝对正确的,我也写了同样的代码,但我无法考虑如何将数据放在一个 refsursor 中,因为一个菜单可以有多个子菜单
  • 我是否需要将对象创建为 menu_object(string,menu_object) 直到填充 1 级菜单然后将其插入到一个临时表中,然后对其他 1 级菜单执行相同操作,因为最后我想列出所有菜单,如果我错了,请纠正我
  • SQL 是一种基于集合的语言。我不确定我是否理解您想要退回的内容?您想要一个 1 列 6 行的结果集吗?您想要 2 列 6 行 1 列告诉您菜单项是什么“级别”吗?还有什么?
  • { "main_menu": [ { "menu1": { "DESC": "menu1 描述", "menu1submenu1": [{ "DESC": "menu1submenu1 描述", "menu1submenu1submenu1": [ ] }] } }, { "menu2": { /*同菜单 1*/ } } ] }

标签: oracle stored-procedures plsql java cursors


【解决方案1】:

这是一个非常基本的示例,但希望对您有所帮助。建议您使用此模板并填写更多信息,因为编写代码的部分好处是学习。您必须弄清楚如何将 JSON 数据传递给数据库或模式。这仅与 PL/SQL 有关。

    CREATE PROCEDURE <procedure_name> (
    x1   IN VARCHAR2(10),
    x2   IN VARCHAR2(10),
    ...
    RECORDS OUT SYS_REFCURSOR
    )
AS 
   v_sql  CLOB /* or use VARCHAR2(32767) */
BEGIN
<your logic>
v_sql := v_sql || '<your query statement to return values'>

OPEN RECORDS FOR v_sql;

END <procedure_name>
;

/* 到文本执行此操作,定义一个变量并在 SQL-Plus 中将输出传递给它 */

var v_test REFCURSOR
begin
 <procedure_name>(x1 => value1, x2 => value2, :v_test);
end;

SELECT :v_text from dual;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多