如果在定义VARRAY的时候带上NOT NULL限制,那么这个VARRAY的元素就不能为NULL.如下定义:CREATE OR REPLACE TYPE integer_varray
AS VARRAY(5) OF INTEGER NOT NULL;
/然后有一个PLSQL块如下:DECLARE -- Declare and initialize a null set of rows.
varray_integer INTEGER_VARRAY := integer_varray();BEGIN -- Loop through all records to print the varray contents.
FOR i IN 1..varray_integer.LIMIT LOOP -- Initialize row.
varray_integer.EXTEND; /*没有赋值,如果不赋值是NULL的话,应该编译错误啊,结果是顺利通过编译*/ END LOOP; -- Print to console how many rows are initialized.
dbms_output.put ("Integer Varray Initialized ");
dbms_output.put_line("["||varray_integer.COUNT||"]");
--varray_integer(1):=null;
FOR i IN 1..varray_integer.COUNT LOOP -- Print the contents.
dbms_output.put ("Integer Varray ["||i||"] ");
dbms_output.put_line("["||varray_integer(i)||"]");
if(varray_integer(i) is null) then /*本来是认为这里应该不执行,结果会打印出来*/
dbms_output.put_line("Integer Varray ["||i||"] "|| "is null");
end if; END LOOP;END;
/运行结果如下:/*运行也正常,显示元素为NULL,于定义矛盾*/Integer Varray Initialized [5]
Integer Varray [1] []
Integer Varray [1] is null
Integer Varray [2] []
Integer Varray [2] is null
Integer Varray [3] []
Integer Varray [3] is null
Integer Varray [4] []
Integer Varray [4] is null
Integer Varray [5] []
Integer Varray [5] is null测试环境为:BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - ProductionLinux中模拟诊断Oracle高CPU占用Oracle 子程序参数模式,IN,OUT,NOCOPY相关资讯 Oracle基础教程
- Oracle块编程返回结果集详解 (11/10/2013 10:45:58)
- Oracle基础教程之设置系统全局区 (08/22/2013 14:24:00)
- Oracle基础教程知识点总结 (06/18/2013 07:43:32)
| - Oracle基础教程之tkprof程序详解 (10/22/2013 11:49:50)
- Oracle基础教程之sqlplus汉字乱码 (07/18/2013 16:30:00)
- Oracle 管理之 Linux 网络基础 (02/16/2013 18:37:35)
|
本文评论 查看全部评论 (0)