【问题标题】:populate new records in plsql table of records in oracle在 plsql 中填充 oracle 记录表中的新记录
【发布时间】:2016-01-07 18:55:02
【问题描述】:

我在 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;

【问题讨论】:

  • l_stat_tab 你能给出这个的类型定义吗?
  • 创建或替换PACKAGE test_record AS类型jobs_stat_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) );类型jobs_stat_table_t 是二进制整数索引的jobs_stat_t 表;程序 get_jobs_stat(jobs_stat_table_t 中的 p_jobs_stat_table); END test_record;

标签: sql oracle plsql


【解决方案1】:

我不确定它是否适合你,但例如,可以这样:

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,检查herehere

【讨论】:

  • 我不需要合并这2个查询,我的要求是:在同一个过程中,我需要从pl sql表中的不同查询中插入/填充记录。
  • 检查 MULTISET UNION
  • 我不需要union,这2个查询,可能是我无法解释需求:例如,我有一个procedure from where on line no 10,我会调用所说的procedure填充记录,然后在第 20 行,我再次需要调用该过程来填充记录。通过这种方式,我希望这些所有记录都可以在我的记录表中​​使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 2020-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多