Plsql 使用批量收集功能选择值

Plsql 使用批量收集功能选择值,plsql,bulk,Plsql,Bulk,首先,我创建了一个类型和一个表类型 CREATE OR REPLACE TYPE LAB_LOADING_OBJECT_T AS object ( STUDYID VARCHAR2(300), USUBJID VARCHAR2(300), ..... /*So many columns, so I hide them*/ ); / CREATE OR REPLACE TYPE LAB_LOADING_TABLE_T AS TABLE OF LAB_LOADIN

首先,我创建了一个类型和一个表类型

CREATE OR REPLACE TYPE LAB_LOADING_OBJECT_T
AS
  object
  (
    STUDYID  VARCHAR2(300),
    USUBJID  VARCHAR2(300),
..... /*So many columns, so I hide them*/
);
  /
CREATE OR REPLACE TYPE LAB_LOADING_TABLE_T
AS
  TABLE OF LAB_LOADING_OBJECT_T;
然后我创建一个表,该列与上面提到的LAB_LOADING_OBJECT_相同:

CREATE TABLE TMP_EFC11319_LAB_LOADING_T
  (
    STUDYID  VARCHAR2(300),
    USUBJID  VARCHAR2(300),
..... /*So many columns, so I hide them*/
);
最后,我尝试将该值选择到名为TMP_EFC113_LAB_load_T的表中:

SELECT *
BULK COLLECT INTO TMP_EFC11319_LAB_LOADING_T 
FROM EFC113$STABLE.LBLL ;
LBLL的列与表TMP_EFC113_LAB_LOADING_T相同。但我遇到了一条错误消息:

------------- ORA-03001: unimplemented feature 03001. 00000 - "unimplemented feature" *Cause: This feature is not implemented. *Action: None. Error at Line: 2 Column: 1 --------------
我不知道是什么导致了这个错误。

据我所知,这里根本不涉及类型。看起来您正试图从视图EFC113$STABLE.LBLL中进行选择,并将其插入到表TMP_EFC11319_LAB_LOADING_T中。如果是这种情况,则执行此操作的方法不是尝试在表中进行批量收集-您需要使用insert…SELECT。。。以与以下类似的方式:

INSERT INTO TMP_EFC11319_LAB_LOADING_T (STUDYID, USUBJID, ...)
  SELECT STUDYID, USUBJID, ...
    FROM EFC113$STABLE.LBLL
或者,正如你所发现的,你可以这样做

CREATE TABLE TMP_EFC11319_LAB_LOADING_T
  SELECT *
    FROM EFC113$STABLE.LBLL

分享和享受。

尝试使用选择实验室\u加载\u对象\u TSTUDYID,。。。EFC113$是表还是模式用户?LBLL是表还是列?如果是列,其数据类型是什么?@BobJarvis EFC113$STABLE.LBLL是一个视图,其结构与我创建的类型相同。@Toru我尝试了您的方法,但仍然失败。我不确定错误在哪里。所以现在,我想我必须使用createtablexxx作为SELECT*FROM…哪个数据库版本?我将从一个非常简单的例子开始,看看它是否有效。