ORA-00947 Not enough values while declaring type globally(ORA-00947 全局声明类型时值不足)
问题描述
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;
这是一个非常奇怪的情况,当我全局创建一个类型对象和该类型的嵌套表并创建一个嵌套表类型的变量并批量收集到该变量时我得到
This is a very odd situation, when I create a type object and nested table of that type Globally and create a variable of the nested table type and bulk collect into that variable I get
ORA-00947: 值不够错误
ORA-00947: not enough values error
但是,当我声明一个记录类型和该记录类型的嵌套表,然后在包内声明一个嵌套表的变量时,那么上面的批量收集工作并且不会抛出错误
However, when I declare a record type and nested table of that record type And then a variable of the nested table Inside the package , then the above bulk collect works and it will not throw error
谁能帮我解决这个问题?
Can anyone help me out with this?
推荐答案
您不能只是将值放入对象表中 - 您需要将值转换为适当类型的对象,然后插入对象.试试
You can't just put values into a table of objects - you need to convert the values into objects of the appropriate type and then insert the objects. Try
procedure temp is
v_nt foo_nt;
begin
select FOO_OBJ(id ,status)
bulk collect into v_nt
from foo;
end temp;
未在动物身上进行过测试 - 你会是第一个!
Not tested on animals - you'll be first!
分享和享受.
这篇关于ORA-00947 全局声明类型时值不足的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:ORA-00947 全局声明类型时值不足


基础教程推荐
- 带更新的 sqlite CTE 2022-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01