Oracle collection insert statement



在Oracle中出现错误,在插入时使用批量收集不工作。任何建议如何解决以下问题。很高兴使用任何其他选项

获取错误- ORA-00902:无效的数据类型

/*
create table locations
(
id number(5),
Name varchar(10)
);
Insert into locations values(1,'India');
Insert into locations values(2,'UK');
Insert into locations values(3,'USA');
create table locations_cpy
(
id number(5)
);
commit;
*/
drop package  DataTypeIssue ;
/ 
CREATE OR REPLACE PACKAGE DataTypeIssue AS
TYPE T_CURSOR IS REF CURSOR;
TYPE array_of_numbers IS table OF NUMBER(5);
PROCEDURE DataTypeIssue_example(V_CURSOR OUT T_CURSOR);

END DataTypeIssue;
/
CREATE OR REPLACE PACKAGE BODY DataTypeIssue AS

PROCEDURE DataTypeIssue_example(V_CURSOR OUT T_CURSOR) IS
v_LocationIds array_of_numbers;
v_cnt number;
v_error_code NUMBER;
BEGIN
select id BULK COLLECT into v_LocationIds from locations bc;

-- works here in select 
open V_CURSOR for 
select distinct id from locations
where id  IN (SELECT column_value FROM TABLE(v_LocationIds));
-- insert gettting error
/*
ORA-00902: invalid datatype
*/
insert into locations_cpy 
select distinct 1 from locations
where id  IN (SELECT column_value FROM TABLE(v_LocationIds)); 
rollback;
END DataTypeIssue_example; 

END DataTypeIssue;
/

任何帮助都将不胜感激

在Oracle中得到错误,使用批量收集在插入时不工作。任何建议如何解决以下问题。很高兴使用其他可用的选项,

insert into locations_cpy 
select distinct id, Name from locations
where id  IN (SELECT column_value FROM TABLE(v_LocationIds)); 
rollback;
END DataTypeIssue_example; 

最新更新