IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> PL/SQL 数组 -> 正文阅读

[大数据]PL/SQL 数组

目录

创建Varray类型


????????PL/SQL编程语言提供了一种称为VARRAY的数据结构,它可以存储相同类型元素的固定大小顺序集合。varray用于存储有序的数据集合,但通常最好将数组视为相同类型变量的集合。所有varray元素是由连续的内存位置组成。最低的地址对应第一个元素,而最后一个元素的地址最高。? ????????数组是集合类型数据的一部分,表示可变大小的数组。?varray中的每个元素都具有与之相关联的索引。它还具有可以动态更改的容量(大小)。

创建Varray类型

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

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 namearray AS VARRAY(3) OF VARCHAR2(10);

2、在PL/SQL块中创建VARRAY类型的基本语法:

TYPE varray_type_name IS VARRAY(n) of <element_type>

?例如:

TYPE namearray IS VARRAY(5) OF VARCHAR2(10);

3、实例

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;
/

??请注意:

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

4、实例2

????????变量的元素也可以是任何数据库表的%ROWTYPE或任何数据库表字段的%TYPE表来引用表示,如:

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; -- 使?extend申请空间,?次只申请?个空间长度
      name_list(counter)  := n.name;
      dbms_output.put_line('Customer('||counter ||'):'||name_list(counter));
   END LOOP;
END;
/
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:53:18  更:2022-07-03 10:55:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 4:44:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码