Oracle Forms выбирает несколько записей в блок

Я хочу выбрать несколько записей в блок, используя

SELECT  LEVEL, form_desc, form_NAME 
    FROM FORM_MAST 
    where form_id in ( select FORM_ID from  dhsuser.FORM_PRIVILEGE  where  PRIVILEGEID=1)-- :global.priv)
    CONNECT BY PRIOR form_ID = g_id
    START WITH g_id IS NULL;

или используя эту ПРОЦЕДУРУ в Oracle Form

    PROCEDURE listm IS
l_lev number;
l_dec varchar2(30);
l_nam varchar2(100);

CURSOR mainlist is 
SELECT  LEVEL, form_desc, form_NAME 
FROM FORM_MAST 
where form_id in ( select FORM_ID from  dhsuser.FORM_PRIVILEGE  where  PRIVILEGEID=1)-- :global.priv)
CONNECT BY PRIOR form_ID = g_id
START WITH g_id IS NULL;

BEGIN

  for e_list in mainlist
  loop

    :bmain.level := e_list.level;
    :bmain.desc := e_list.form_desc;
    :bmain.fname := e_list.form_name;

end loop;
END;

Результат должен отображать более одной записи, как показано ниже.

Проблема в том, что когда я запускаю эту процедуру в Oracle Form, она отображает только последнюю запись.


person Al-Hanashi    schedule 13.11.2014    source источник


Ответы (1)


Ваша процедура перебирает набор результатов из вашего запроса и присваивает каждой записи одну и ту же строку в блоке :BMAIN. Когда процедура завершится, вы увидите последнюю извлеченную запись.

Я думаю, вам просто нужно использовать NEXT_RECORD в цикле, но у меня нет установки Forms, на которой я мог бы ее протестировать. Извиняюсь.

person APC    schedule 13.11.2014