簡體   English   中英

Oracle 集合插入語句

[英]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; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM