【发布时间】:2015-08-10 15:00:35
【问题描述】:
SELECT * BULK COLLECT INTO CONNECT_RET_ITEM_DETAIL FROM TABLE(RET_ITEM_IN);
这里RET_ITEM_IN是表类型RET_ITM_DTL_TMP的一个实例;
desc RET_ITM_DTL_TMP;
--------------------------------
TYPE RET_ITM_DTL_TMP AS OBJECT (
ITEM_ID VARCHAR2(50),
ITEM_DESC VARCHAR2(50),
ORDER_NUMBER VARCHAR2(50),
PARCEL_NUMBER VARCHAR2(50),
STORE_NUMBER VARCHAR2(50),
QUANTITY NUMBER ) ;
desc CONNECT_RET_ITEM_DETAIL
Name Null Type
------------- ---- ------------
ITEM_ID VARCHAR2(50)
ITEM_DESC VARCHAR2(50)
ORDER_NUMBER VARCHAR2(50)
PARCEL_NUMBER VARCHAR2(50)
STORE_NUMBER VARCHAR2(50)
QUANTITY NUMBER
我可以在以下情况下成功批量收集:
- 对象到对象
- 表到对象
- 表到表
但是在对象到表类型插入中失败。收到以下错误:
错误(118,6):PLS-00403:表达式“CONNECT_RET_ITEM_DETAIL”不能 用作 SELECT/FETCH 语句的 INTO 目标
【问题讨论】:
-
我也试过了,但没有帮助: FORALL i IN RET_ITEM_IN.first .. RET_ITEM_IN.last INSERT INTO CONNECT_RET_ITEM_DETAIL VALUES RET_ITEM_IN(i);
-
CONNECT_RET_ITEM_DETAIL 是数据库表吗?如果不是,那是什么?
-
不,您不能将
bulk collect放入表中。使用insert into .. select from语句或forall构造。I can successfully bulk collect in 3. Table to table如果我们在谈论db table,那么不,你不能。
标签: sql oracle stored-procedures plsql oracle11g