orientdb数据库-PL/SQL数组

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

在本章中,我们将讨论学习PL/SQL中的数组。 PL/SQL编程语言提供了一种称为VARRAY的数据结构,它可以存储相同类型的元素的固定大小顺序集合。varray用于存储有序的数据集合,但通常最好将数组视为相同类型变量的集合。

所有varray是由连续的内存位置组成。最低的地址对应于第一个元素,而最后一个元素的地址最高。参考以下图示 –

PL/SQL数组

数组是集合类型数据的一部分,表示可变大小的数组。 我们将在后面的“PL/SQL集合”这一章中学习其他集合类型。

varray中的每个元素都具有与之相关联的索引。它还具有可以动态更改的容量(大小)。

创建Varray类型

使用CREATE TYPE语句创建varray类型。必须指定存储在varray中的元素的最大容量(大小)和类型。

在模式(schema)级创建VARRAY类型的基本语法是 –

CREATE OR REPLACE TYPE varray_type_name IS VARRAY(n) of <element_type> 

其中,

  • varray_type_name是一个有效的属性名称;
  • nvarray中元素的数量(最大值);
  • element_type是数组元素的数据类型。

可以使用ALTER TYPE语句更改变量的最大大小。

例如,

CREATE Or REPLACE TYPE namearray AS VARRAY(3) OF VARCHAR2(10);  / 

在PL/SQL块中创建VARRAY类型的基本语法是 –

TYPE varray_type_name IS VARRAY(n) of <element_type> 

例如 –

TYPE namearray IS VARRAY(5) OF VARCHAR2(10);  Type grades IS VARRAY(5) OF INTEGER; 

下面让我们来看几个例子来更好地理解这个概念 –

实例-1

以下程序说明了如何使用varrays

SET SERVEROUTPUT ON SIZE 99999; DECLARE     type namesarray IS VARRAY(5) OF VARCHAR2(10);     type grades IS VARRAY(5) OF INTEGER;     names namesarray;     marks grades;     total integer;  BEGIN     names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz');     marks:= grades(98, 97, 78, 87, 92);     total := names.count;     dbms_output.put_line('Total '|| total || ' Students');     FOR i in 1 .. total LOOP        dbms_output.put_line('Student: ' || names(i) || '        Marks: ' || marks(i));     END LOOP;  END;  / 

当上述代码在SQL提示符下执行时,它会产生以下结果 –

PL/SQL数组

请注意 –

  • 在Oracle环境中,varrays的起始索引始终为1
  • 可以使用varray类型的构造方法初始化varray元素,该方法与varray具有相同的名称。
  • varrays是一维数组。
  • varray在声明时自动为NULL,并且必须在引用元素之前初始化它。

示例-2

变量的元素也可以是任何数据库表的%ROWTYPE或任何数据库表字段的%TYPE表来引用表示。 以下示例说明了这个概念。

将使用数据库中存储的CUSTOMERS表,结构和数据如下所示 –

CREATE TABLE customers ( id number(10) NOT NULL,   name varchar2(50) NOT NULL,   age number(2) NOT NULL,   address varchar2(50),   salary float(2) NOT NULL,   CONSTRAINT customers_pk PRIMARY KEY (id) );  INSERT INTO customers (id,name,age,address,salary) VALUES(1, '罗大牛',32,'北京', 22999.00); INSERT INTO customers (id,name,age,address,salary) VALUES(2, 'Maxsu',25,'海口', 5999.00); INSERT INTO customers (id,name,age,address,salary) VALUES(3, 'Hinew',22,'广州', 9800.98); INSERT INTO customers (id,name,age,address,salary) VALUES(4, '李小路',26,'北京', 18700.00); INSERT INTO customers (id,name,age,address,salary) VALUES(5, '张友德',28,'上海', 18999.00); INSERT INTO customers (id,name,age,address,salary) VALUES(6, '李连定',42,'深圳', 32999.00); 

以下示例使用游标引用(有关游标将在单独的章节中详细介绍和学习)。参考以下代码 –

SET SERVEROUTPUT ON SIZE 99999; DECLARE     CURSOR c_customers is     SELECT  name FROM customers;     type c_list is varray (6) of customers.name%type;     name_list c_list := c_list();     counter integer :=0;  BEGIN     FOR n IN c_customers LOOP        counter := counter + 1;        name_list.extend;        name_list(counter)  := n.name;        dbms_output.put_line('Customer('||counter ||'):'||name_list(counter));     END LOOP;  END;  / 

当上述代码在SQL提示符下执行时,它会产生以下结果 –

PL/SQL数组

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 plsql数据库/a> 只为你绽放。

本文固定链接: http://kua0.com/2019/05/18/orientdb数据库-pl-sql数组/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注