在PL / SQL包中使用COLLECTION合并到表中

时间:2019-05-25 07:44:57

标签: oracle plsql user-defined-types

在这里,我尝试在包中创建嵌套表集合

create or replace PACKAGE udt_types_pkg
AS
 type customers_rec is table of customers%rowtype;
END udt_types_pkg;

我尝试创建一个过程,声明一个cust_rec集合,该集合引用了程序包中的集合类型

create or replace PROCEDURE test_proc(

      output_msg OUT VARCHAR2)
      --rcrds_affected OUT VARCHAR2)
IS

cust_rec udt_types_pkg.customers_rec;

BEGIN
   SELECT * BULK COLLECT INTO cust_rec
     FROM CUSTOMERS;

     merge into customers_new tar
      using (
        select * from table(cust_rec)
      ) src  
      on (src.customerid = tar.customerid)
      when matched then
        update set 
        tar.type = src.type

      when not matched then
        insert 
         values (src.customerid,  src.name, src.address, src.telephone, src.type); 

            output_msg := 'Procedure_successfully_executed';
END;

运行该程序时出现此错误:

  

ORA-21700:对象不存在或被标记为删除
  ORA-06512:位于“ SYSTEM.TEST_PROC”的第13行
  ORA-06512:在第5行

请帮助我解决此问题。谢谢!

我可能还需要将该过程包含在其他软件包中。

0 个答案:

没有答案