2016-01-07 6 views
-1

У меня есть таблица записей в plsql.Заполнение новых записей в таблице записей в оракуле

шаг 1. заполнить таблицу со следующими:

    select 1, oeh.header_id oeh.order_number, 'This is step 1' BULK COLLECT 
       into l_stat_tab 
       from oe_order_headers_all oeh 
       where oeh.header_id = 7923374; 

test_record.get_jobs_stat(l_stat_tab); 

Шаг 2: в том же порядке, я это снова нужно заполнить запись:

   select 2, header_id, order_number,'This is step 2' BULK COLLECT 
       into l_stat_tab 
       from order_table 
       where id = 7923373; 

test_record.get_jobs_stat(l_stat_tab); 

для следующего вызова, тем значения первого вызова заменяются.

Как я могу найти следующий доступный индекс, или я могу вставить (заполнить) в таблицу записей?

CREATE OR REPLACE PACKAGE test_record 
      AS 
       TYPE jobs_stat_t IS RECORD (
        valid    NUMBER, 
        header_id   NUMBER, 
        child_header_id  NUMBER, 
        order_number   NUMBER, 
        line_number   NUMBER, 
        parent_line_number NUMBER, 
        wip_entity_id  NUMBER, 
        status_type   VARCHAR2 (30), 
        ordered_item   VARCHAR2 (50), 
        remarks    VARCHAR2 (100) 
       ); 

       TYPE jobs_stat_table_t IS TABLE OF jobs_stat_t 
        INDEX BY BINARY_INTEGER; 

       PROCEDURE get_jobs_stat (
        p_jobs_stat_table IN jobs_stat_table_t 
       ); 
      END test_record; 
+0

l_stat_tab Вы можете дать определение типа для этого? – Dawn

+0

создать или заменить ПАКЕТ test_record AS тип jobs_stat_t является запись ( \t \t действительный номер, header_id номер, child_header_id номер, ORDER_NUMBER, номер line_number, номер parent_line_number, wip_entity_id номер, status_type varchar2 (30), ordered_item varchar2 (50), замечания varchar2 (100) \t); \t Тип jobs_stat_table_t - таблица с указанием jobs_stat_t по binary_integer; процедура get_jobs_stat (p_jobs_stat_table в jobs_stat_table_t); END test_record; –

ответ

0

Я не уверен, если это будет правильным для вас, но, например, можно сделать так:

WITH sel AS (
select 1, oeh.header_id oeh.order_number, 'This is step 1' 
from oe_order_headers_all oeh 
where oeh.header_id = 7923374 
UNION ALL 
select 2, oeh.header_id, oeh.order_number,'This is step 2' 
from oe_order_headers_all oeh 
where oeh.header_id = 7923373) 

SELECT * 
BULK COLLECT 
into l_stat_tab 
FROM sel; 

Или вы можете использовать MULTISET UNION, проверьте here и here

+0

Мне не нужно объединять 2 запроса, мое требование: в той же процедуре мне нужно вставить/заполнить записи из разных запросов в таблице pl sql. –

+0

Check MULTISET UNION – Tatiana

+0

Мне не нужно объединяться, эти 2 запроса, возможно, я не могу объяснить это требование: например, у меня есть процедура, с которой в строке 10, я вызову указанную процедуру, чтобы заполнить записей, затем в строке 20, мне снова нужно вызвать процедуру для заполнения записей. таким образом, я хочу, чтобы все записи были доступны в моей таблице записей. –

Смежные вопросы