ORA-06531:Reference to uninitialized collection 问题解决
错误信息:
ORA-06531:Reference to uninitialized collection
错误SQL代码:
declare TYPE t_student_var IS TABLE OF VARCHAR2(100); v_tbl_name t_student_var; begin select name into v_tbl_name(1) from t_student where gid = 1; select name into v_tbl_name(2) from t_student where gid = 2; select name into v_tbl_name(3) from t_student where gid = 3; dbms_output.put_line(v_tbl_name(1)); dbms_output.put_line(v_tbl_name(2)); dbms_output.put_line(v_tbl_name(3)); end;
问题分析:
Oracle自定义类型语法:
TYPE type_name IS TABLE OF element_type INDEX BY [BINARY_INTEGER | PLS_INTEGER | VARRAY2]; 其中:INDEX BY: 该语句的作用是使Number类型的下标自增长,,自动初始化,并分配空间,有了该语句,向表记录插入元素时,不需要显示初始化,也不需要通过extend分配空间。Binary_Integer 与 Pls_Integer 都是整型类型.
Binary_Integer类型变量值计算是由Oracle来执行,不会出现溢出,但是执行速度较慢,因为它是由Oracle模拟执行。而Pls_Integer的执行是由硬件即直接由CPU来运算,因而会出现溢出,但其执行速度较前者快许多。
通过上面的说明可以知道解决的办法有两个:
1、定义记录表类型时,要加上INDEX BY语句,修改之后如下:
declare TYPE t_student_var IS TABLE OF VARCHAR2(100) INDEX BY BINARY_INTEGER; v_tbl_name t_student_var; begin select name into v_tbl_name(1) from t_student where gid = 1; select name into v_tbl_name(2) from t_student where gid = 2; select name into v_tbl_name(3) from t_student where gid = 3; dbms_output.put_line(v_tbl_name(1)); dbms_output.put_line(v_tbl_name(2)); dbms_output.put_line(v_tbl_name(3)); end;
这种方式比较简易,建议使用这种方式.
2、初始化,并使用extend语句扩展空间,修改之后如下:
declare TYPE t_student_var IS TABLE OF VARCHAR2(100); v_tbl_name t_student_var := t_student_var();--初始化 begin v_tbl_name.extend;--扩展空间 select name into v_tbl_name(1) from t_student where gid = 1; v_tbl_name.extend;--扩展空间 select name into v_tbl_name(2) from t_student where gid = 2; v_tbl_name.extend;--扩展空间 select name into v_tbl_name(3) from t_student where gid = 3; dbms_output.put_line(v_tbl_name(1)); dbms_output.put_line(v_tbl_name(2)); dbms_output.put_line(v_tbl_name(3)); end;
另外,使用extend(n),一次性扩展n个空间,所以下面代码和上面的效果是一样的:
declare TYPE t_student_var IS TABLE OF VARCHAR2(100); v_tbl_name t_student_var := t_student_var();--初始化 begin v_tbl_name.extend(3);--扩展3个空间 select name into v_tbl_name(1) from t_student where gid = 1; select name into v_tbl_name(2) from t_student where gid = 2; select name into v_tbl_name(3) from t_student where gid = 3; dbms_output.put_line(v_tbl_name(1)); dbms_output.put_line(v_tbl_name(2)); dbms_output.put_line(v_tbl_name(3)); end
以上就是ORA-06531:Reference to uninitialized collection 问题解决的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)Map提供key到value的映射ArrayList和Vector的区别,HashMap和Hashtable的区别答:就ArrayList与Vector主要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一

CollectionCollection接口被List接口和Set接口继承ListArrayList是List接口的实现类ArrayListArrayList类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList继承了AbstractList,并实现了List接口。创建ArrayList对象:publicclassList{publicstaticvoidmain(String[]args){varlist=newArrayList()

随着互联网和移动技术的不断发展,越来越多的程序员和开发者开始关注数据结构和算法。在Web开发中,PHP作为一门广泛使用的编程语言,也在逐渐地得到重视。而在PHP8.0版本中,新增加了一个数据结构库——Collection,用于实现一些常用的数据结构和算法,使得PHP开发更加高效、简便。Collection是PHP数据结构库的一个开源实现,它提供了一些实用的数

1、说明Collection接口有三个子接口,List、Set和Queue。List会按照元素的插入顺序保存元素,Set中的元素都不能重复。Collection中定义了一些公共的方法,这些基本的工具方法,如确定容器的大小,判断容器是否为空,清空容器,迭代容器元素等方法。2、实例interfaceCollectionextendsIterable{intsize();booleanisEmpty();booleancontains(Objecto);Iteratoriterator();Objec

Collection接口Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。JavaSDK不提供直接继承自Collection的类,JavaSDK提供的类都是继承自Collection的“子接口”如List和Set。所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一

字典是 Python 必用且常用的数据结构,本文梳理常用的字典操作,看这个就够了,涉及:初始化合并字典字典推导式Collections 标准库字典转 JSON字典转 Pandas初始化# 最常用这种 my_object = { "a": 5, "b": 6 } # 如果你不喜欢写大括号和双引号: my_object = dict(a=5, b=6)合并字典a = { "a": 5, "b": 5 } b

先简单来段例子:publicvoidtestGenerics(){Collectionnumbers=newArrayList();numbers.add(1);//oknumbers.add(0.1);//okCollection,又是很多人(包括我)第一反应肯定是“Object是所有java对象的公共父类,所以Collection可以表示任意类型的集合”,来看个例子:publicvoidtestGenerics2(){Collectionintegers=newArrayList();Col

Collection接口Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。JavaSDK不提供直接继承自Collection的类,JavaSDK提供的类都是继承自Collection的“子接口”如List和Set。所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini
