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

oracle – ORA-00947在全局声明类型时没有足够的值

发布时间:2020-12-12 13:49:00 所属栏目:百科 来源:网络整理
导读:create table foo( id number,status varchar2(10) ); 表创建. insert into foo values( 1,'open' );insert into foo values( 2,'close' );insert into foo values( 3,'open' );insert into foo values( 4,'open' );insert into foo values( 5,'close' );cre
create table foo(
   id number,status varchar2(10)
 );

表创建.

insert into foo values( 1,'open' );
insert into foo values( 2,'close' );
insert into foo values( 3,'open' );
insert into foo values( 4,'open' );
insert into foo values( 5,'close' );

create type foo_obj is object (
      id number,status varchar2(10)
    );
   /

 create type foo_nt
     as table of foo_obj;
  /

 create or replace package test_bulk
 is 

 procedure temp;

 end;
 /

 create or replace package body test_bulk
 is 

 procedure  temp
   is 
   v_nt  foo_nt;
   begin
     select id,status 
     bulk collect into v_nt
     from foo;

   end temp;

   end test_bulk;

这是一个非常奇怪的情况,当我创建一个类型对象和该类型的嵌套表全局,并创建一个嵌套表类型的变量和批量收集到该变量我得到

ORA-00947: not enough values error

但是,当我声明一个记录类型和嵌套表的那个记录类型然后一个嵌套表的变量在包中,那么上面的批量收集工作,它不会抛出错误

有人可以帮我吗?

您不能将值放入对象表中,您需要将值转换为适当类型的对象,然后插入对象.尝试
procedure temp is
  v_nt  foo_nt;
begin
  select FOO_OBJ(id,status)
    bulk collect into v_nt
    from foo;
end temp;

没有动物测试 – 你会是第一!

分享享受.

(编辑:李大同)

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

    推荐文章
      热点阅读