加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – 怎样从批量网络的记录范例表中选择

发布时间:2021-03-07 16:19:35 所属栏目:站长百科 来源:网络整理
导读:我有一个措施,我必要缓存一些数据,出于机能缘故起因,下流操纵. TYPE界说有用 BULK COLLECT INTO有用 SELECT不起浸染 PROCEDURE MYPROC((PARAMS))AS TYPE REC_TYPE IS RECORD ( COLUMN_1 (TABLEA.COLUMN_A)%TYPE,COLUMN_2 (TABLEA.COLUMN_B)%TYPE ); TYPE TAB_TYP

我有一个措施,我必要缓存一些数据,出于机能缘故起因,下流操纵.

TYPE界说有用

BULK COLLECT INTO有用

SELECT不起浸染

PROCEDURE MYPROC((PARAMS))AS

  TYPE REC_TYPE IS RECORD (
    COLUMN_1 (TABLEA.COLUMN_A)%TYPE,COLUMN_2 (TABLEA.COLUMN_B)%TYPE
  );

  TYPE TAB_TYPE IS TABLE OF REC_TYPE;

  TABLE_1 TAB_TYPE;

BEGIN

  SELECT  COLUMN_A,COLUMN_B
  BULK COLLECT INTO TABLE_1 
  FROM  TABLE_A;

  SELECT * FROM TABLE_1;

END MYPROC;

产量:

Error(#,#): PL/SQL: ORA-00942: table or view does not exist

我也实行将它包装在一个表函数中,就像我在其他处所行使我的单列范例一样,但这也不起浸染

SELECT * FROM TABLE(TABLE_1);

Error(#,#): PL/SQL: ORA-22905: cannot access rows from a non-nested
table item

办理要领

您的题目现实上是PLS-00642错误,而不是ORA-22905.实质上,您不能在SQL语句中行使当地荟萃范例.因此,办理方案是在架构级别界说范例.以这种方法界说范例时,我们不能行使%TYPE语法,而是必需明晰界说列( Getting PLS-00201 error while creating a type in oracle),即

create or replace type rec_type as object (
  COLUMN_1 integer,COLUMN_2 varchar2(128)
);

create or replace type tab_type as table of rec_type;

然后,您必要将值显式转换为相干范例,以便执行批量网络,如下所述:ORA-00947 Not enough values while declaring type globally.

因此,您的措施将如下所示:

PROCEDURE MYPROC((PARAMS))AS
  TABLE_1 TAB_TYPE;
  lCount  integer;
BEGIN

  SELECT  REC_TYPE(COLUMN_A,COLUMN_B)
  BULK COLLECT INTO TABLE_1 
  FROM  TABLE_A;

  SELECT COUNT(*) INTO lCount FROM TABLE(TABLE_1);
END MYPROC;

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读