首页 文章

Oracle - 将游标数据插入自定义类型表

提问于
浏览
2

我有类似的类型

CREATE OR REPLACE TYPE MY_TYPE AS OBJECT
(
  id               NUMBER(10, 0),
  name             VARCHAR2(4),
  lastName         VARCHAR2(13),
  address          VARCHAR2(30),
  previousAddress  VARCHAR2(80)
);

以及这些表格

CREATE OR REPLACE TYPE MY_TYPE_ROWS AS TABLE OF MY_TYPE

我想要做的是插入从“MY_TYPE_ROWS”表中的游标返回的一些行 . (我想在pl / sql程序中这样做)

我要插入“MY_TYPE_ROWS”的数据位于游标中,如:

cursor dataCursor IS 
select 
id,name, lastName,address,previousAddress
from table1;

(光标返回超过1行)

我尝试过类似的东西:

my_table_rows           MY_TYPE_ROWS := MY_TYPE_ROWS ();

  OPEN dataCursor ;
  FETCH dataCursor 
  INTO my_table_rows;
  CLOSE dataCursor ;

但我得到一个异常“错误:PLS-00386:在FETCH游标和INTO变量之间的'my_table_rows'中找到类型不匹配”

谢谢

1 回答

  • 1

    你不能那样做吗?

    declare
      my_table_rows           my_type_rows;
    begin
      select my_type(id,name,lastname,address,previousaddress)
      bulk collect into my_table_rows
      from table1;
    
      -- do whatever you want
    end;
    

    你的方法的问题是你试图通过单个 into 选择一行,甚至不包含任何对象 .

    根据定义,它应该是 an array of objects . 所以 bulk collect 实现了数组提取, my_type(id,name,lastname,address,previousaddress) 实现了创建数组的对象 .

相关问题