2015-09-07 2 views
1

Я новичок в pl/SQL, пожалуйста, помогите мне создать процедуру!refcursor, возвращающий объект, который содержит список всех данных

Сценарий: У меня есть категории и подкатегории, и каждая категория и подкатегория имеет описание. Я хочу, чтобы процедура возвращала refcursor со списком объектов, которые содержат список level1 menu', а затем все списки подменю на основе родительского меню с описанием.

Пример:

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

Java определение класса:

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

Я хотел бы иметь хранимую процедуру в Oracle PL/SQL для заполнения объекта в Java.

Обращайтесь к нам с refcursor, возвращая объект, содержащий все необходимые данные!

+1

Какой код у вас до сих пор? Все хорошо, и хорошо быть новым для PL/SQL, но вы ничего не узнаете, если напишете код для вас ... – Phil

+0

Привет, Фир, вы абсолютно правы, я также ввожу код для этого же, но я не мог подумать о том, как мне нужно поместить данные в один рефкурсор, поскольку одно меню может иметь несколько подменю – user19179296

+0

Мне нужно создать объект как menu_object (string, menu_object) до того, как меню уровня 1 заселяется, а затем вставьте его в один временный table, а затем сделать то же самое для другого меню уровня 1, потому что, наконец, я хочу перечислить все меню, пожалуйста, corrent me, если я ошибаюсь – user19179296

ответ

0

Это очень простой пример, но надеюсь, что это поможет. Рекомендуем вам использовать этот шаблон и заполнить дополнительную информацию, так как часть преимуществ написания кода учится. Вам нужно будет выяснить, как передать данные 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; 
Смежные вопросы