0

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

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_T 相同:

CREATE TABLE TMP_EFC11319_LAB_LOADING_T
  (
    STUDYID  VARCHAR2(300),
    USUBJID  VARCHAR2(300),
..... /*So many columns, so I hide them*/
);

最后,我尝试将值选择到名为 TMP_EFC113_LAB_LOADING_T 的表中:

SELECT *
BULK COLLECT INTO TMP_EFC11319_LAB_LOADING_T 
FROM EFC113$STABLE.LBLL ;

LBLL 的列与表 TMP_EFC113_LAB_LOADING_T 相同。但是我遇到了一条错误消息:

-------------
ORA-03001: 未实现的功能
03001. 00000 - “未实现的功能”
*原因:此功能未实现。
*行动:无。
行错误:2 列:1
--------------

我不知道是什么带来了错误。

4

1 回答 1

0

据我所见,该类型根本不涉及这里。看起来您正试图从视图 (EFC113$STABLE.LBLL) 中选择并插入表 (TMP_EFC11319_LAB_LOADING_T)。如果是这种情况,这样做的方法是不要尝试在表中执行 BULK COLLECT - 您需要以类似于以下方式使用 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

分享和享受。

于 2013-05-24T11:22:58.323 回答