PL/SQL 数组的使用
一、固定数组
1、在模式(schema)级创建VARRAY类型
语法:
CREATE OR REPLACE TYPE varray_type_name IS VARRAY(n) OF <element_type>
其中,
varray_type_name是一个有效的属性名称;n是varray中元素的数量(最大值);element_type是数组元素的数据类型。
可以使用ALTER TYPE语句更改变量的最大大小。
实例:
CREATE OR REPLACE TYPE namesarray IS VARRAY(3) OF VARCHAR2(10);
备注:在Oracle中,一个用户就是一个Schema,表都是建立在Schema中的,也可以理解为每个用户拥有不同的表。一个用户想访问另外一个用户,也就是另外一个schema的表的时候,可以用 username.tablename的形式来访问。
2、在PL/SQL块中创建VARRAY类型
语法:
TYPE varray_type_name IS VARRAY(n) OF <element_type>
实例:
DECLARE
TYPE namesarray IS VARRAY(5) OF VARCHAR2(10);
TYPE gradesarray IS VARRAY(5) OF INTEGER;
names namesarray;
marks gradesarray;
total INTEGER;
BEGIN
names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz');
marks := gradesarray(98, 97, 78, 87, 92);
total := names.count;
dbms_output.put_line('总共有 '|| total || ' 名学生');
FOR i IN 1 .. total LOOP
dbms_output.put_line('姓名: ' || names(i) || ' 成绩: ' || marks(i));
END LOOP;
END; 结果:
总共有 5 名学生
姓名: Kavita 成绩: 98
姓名: Pritam 成绩: 97
姓名: Ayan 成绩: 78
姓名: Rishav 成绩: 87
姓名: Aziz 成绩: 92
注意:
- 在Oracle环境中,varrays的起始索引始终为;
- 可以使用varray类型的构造方法初始化varray元素,该方法与varray具有相同的名称;
- varrays是一维数组;
- varray在声明时自动为NULL,并且必须在引用元素之前初始化它。
二、可变数组
DECLARE
TYPE ORG_TABLE_TYPE IS TABLE OF VARCHAR2(25)
INDEX BY BINARY_INTEGER;
V_ORG_TABLE ORG_TABLE_TYPE;
BEGIN
V_ORG_TABLE(1) := '';
V_ORG_TABLE(2) := '';
V_ORG_TABLE(3) := '';
V_ORG_TABLE(4) := '';
V_ORG_TABLE(5) := '';
FOR i IN V_ORG_TABLE.first .. V_ORG_TABLE.last LOOP
dbms_output.put_line(V_ORG_TABLE(i));
END LOOP;
END;
PL/SQL 数组的使用的更多相关文章
- Oracle数据库之PL/SQL程序设计基础
PL/SQL程序设计基础 一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ ...
- Oracle数据库之PL/SQL程序基础设计
一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执 ...
- PL/SQL详细介绍,设置oracle相关
1. 实现参照完整性 指若两个表之间具有主从关系(即主外键关系),当删除主表数据时,必须确保相关的从表数据已经被删除. 当修改主表的主键列数据时,必须确保相关从表数据已经被修改.为了实现级 ...
- PL/SQL之基础篇
参考文献:<Oracle完全学习手册>第11章 1.PL/SQL概述 PL/SQL(Procedure Language/Structuer Query Language)是Oracle对 ...
- PL/SQL — 变长数组
PL/SQL变长数组是PL/SQL集合数据类型中的一种,其使用方法与PL/SQL嵌套表大同小异,唯一的区别则是变长数组的元素的最大个数是有限制的.也即是说变长数组的下标固定下限等于1,上限可以扩展.下 ...
- PL/SQL 嵌套表变长数组和索引表[转]
关于PL/SQL中这三种数组的介绍,不想写了.转一篇日志吧…… 链接:http://www.blogjava.net/decode360/archive/2008/08/08/280825.html ...
- PL/SQL 训练02--集合数组
1. 请列举关联数组.嵌套表.VARRAY三种集合类型的区别区别:1 关联数组只能在plsql中使用,嵌套表,varray可用于sql中,数据库表中的列2 嵌套表,varray必须在使用的时候初始化, ...
- oracle学习之路(四) ---------PL/SQL 表,二维数组(TABLE)
LOB类型 ORACLE提供了LOB (Large OBject)类型.用于存储大的数据对象的类型.ORACLE眼下主要支持BFILE, BLOB, CLOB 及 NCLOB 类型. NCLOB 存储 ...
- Oracle PL/SQL随堂笔记总结
1.pl/sql编程 2.存储过程 3.函数 4.触发器 5.包 6.pl/sql基础 -定义并使用变量 7.pl/sql的进阶 8.oracle的视图 1.pl/sql编程 1.理解oracle的p ...
随机推荐
- (转载)C#获取当前应用程序所在路径及环境变量
一.获取当前文件的路径 string str1=Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名. string st ...
- c# 使用队列保存图片
Invoke(new EventHandler(delegate { Bitmap bitmap2 = (Bitmap)eventArgs.Frame.Clone(); ThreadPool.Queu ...
- mvc 页面简单get获取后台数据
后台方法 public ActionResult Linq() { var lt = UserSys.FindAll(); Hashtable ht = new Hashtable(); ht.Add ...
- 通过response向服务器用Io流写入图片
1.响应头设置字节. 使用response获得字节输出流 ServletOutputStream out = response.getOutputStream(); ...
- python 之闭包
原文 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_sum(*args): a ...
- ssh-keygen使用
ssh-keygen 作用就是验证主机和用户公钥加密 值得注意的是passphrase选项询问 是对自身密钥的保护,因为在ssh通信前,密钥是不受保护的,如果填来的话通常会使用aes256-cbc的对 ...
- querySelector()与querySelectorAll()的区别及NodeList和HTMLCollection对象的区别
querySelector().Document.Element类型均可调用该方法. 当用Document类型调用querySelector()方法时,会在文档元素范围内查找匹配的元素:而当用Elem ...
- Android 自定义Dialog中加EditText弹不出键盘跟Dialog遮挡键盘的问题
先上两张图 第一张问题很明显,第二张是成功的图, 其实第一张是加了 //getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INP ...
- sqlserver内存管理之lazy writer
任何在缓冲区被修改的页都会被标记为“脏”页.将这个脏页写入到数据磁盘就是CheckPoint或者Lazy Writer的工作.前面就大体说了一下checkpoint,这会就简单的理解一下这个lazy ...
- Laravel 单元测试-模拟认证的用户
在 Laravel 编写单元测试时经常会遇到需要模拟认证用户的时候,比如新建文章.创建订单等,那么在 Laravel unit test 中如何来实现呢? 官方解决方法 Laravel 的官方文档中的 ...