PL-SQL-数组

  • 时间:
  • 浏览:60
  • 来源:it300
在本章中,我们将讨论PL/SQL中的数组。PL/SQL编程语言提供了一种名为VARRAY的数据结构,它可以存储相同类型的元素的固定大小的顺序集合。varray用于存储有序的数据集合,但是通常最好将数组看作相同类型的变量集合。

所有varray都由相邻的存储器位置组成。最低地址对应于第一个元素,最高地址对应于最后一个元素。

数组是集合类型数据的一部分,它表示可变大小的数组。我们将在后面的章节中'PL/SQL Collections'.

avarray中的每个元素都有一个与之相关联的索引。它还具有可以动态更改的最大大小。

创建Varray类型

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

在模式级别创建VARRAY类型的基本语法是

CREATEORREPLACETYvarray_type_name IS VARRAY(n)<._type>

其中,

  • >varray_type>/i>是有效的属性n{ame,
  • n>>n<>i>
  • 元素>类型元素类型>/i>是阵列元素的数据类型是阵列元素的数据类型。
  • >ul>>p>可以使用ALTER>ALTER类型语句来改变可变射线的最大大小。

    >p>>p>>p>>例如,

    >例如,

    >预类别>预类别>>预类型="预印制记记记记记记记记记记记记记记记记名板>>CREATE或REPLACETY命名阵列名称阵列AS VARRAY(CREATE或3)弗吉尼亚州(10);/类型创建。>p>在PL/SQL块内创建VARRAY类型在PL/SQL块内创建VARRAY类型的基本语法是

    P>P>P>P>P>P>P>P>p>例如8722;

    >p>>p>p>

    >Pre>pre类型>预类型命名阵列IS VARRAY(5)类型等级为VARRAY(等级为VARRAY(等级等级等级等级为等级等级等级等级为等级为等级等级等级为等级等级等级为等级等级等级等级等级为等级等级等级为等级等级等级等级为等级等级等级为等级等级等级等级等级等级为等级等级等级等级等级为等级等级等级等级等级为等级等级等级等级等级等级为等级5)整数;

    实例1

    下面的程序说明了使用varray

    DECLARE Type namesarray is VARRAY(5)of VARCHAR2(10);typegradesisVARRAY(5)of INTEGER;namesarray;marks grades;total integer;BEGIN名称:=namesarray('Kavita','Pritam','Ayan','Rishav','Aziz');标记:=年级(98,97,78,87,92);.:=..count;dbms_output.put_line('Total'|.|'.');foriin1.total LOOP dbms_output.put_line('Student: '|.(i)|||Marks: '|mark(i));END LOOP;END;/

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

    Total 5.:Kavita Marks:98个学生:Pritam Marks:97个学生:Ayan Marks:78个学生t: Rishav Marks: 87学生: Aziz Marks: 92PL/SQL过程成功完成。注意

    请注意

    • 在Oracle环境中,varray的起始索引总是1。

      >/li>
    • 可以使用与varray同名的varray类型的构造函数方法来初始化varray元素。

      /p>/li>
    • Varrays是一维数组。

      /li>
    • >p>varray是真实的当声明它并且必须在引用其元素之前对其进行初始化时,自动为空。

    示例2

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

    我们将使用数据库中存储的CUSTOMERS表作为数据库中存储的CUSTOMERS表.

    从客户选择*; -------------------------- ---------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------拉梅什|32|艾哈迈达巴d |  2000.00 | |  2 | Khilan   |  25 | Delhi     |  1500.00 | |  3 | kaushik  |  23 | Kota      |  2000.00 | |  4 | Chaitali |  25 | Mumbai    |  6500.00 | |  5 | Hardik   |  27 | Bhopal    |  8500.00 | |  6 | Komal    |  22 | MP        |  4500.00 |  ---- ---------- ----- ----------- ----------  

    Following example makes the use of cursor,您将在一个单独的章节中详细研究它。

    DECLARE CURSOR c_customers是从客户中选择名称;类型c_list是customers的varray(6).name%type;name_list c_list:=c_list();计数器整数:=0;BEGIN for in in in c_customers LOOP.:=. 1;n a n ame_list..;me_list..;name_list(.):=n.name; =n.name; =n.name;dbms_output.put_put_line('Customer('|计数器||计数器_|计数器____|计数器_|__..|计数器'):“||name_list(.)); |||||name_name_list(.)); |END LOOP END LOOP END; /
    >>p>p>>当上述代码在SQSQL提示符处执行时,生成以下结果<<<

    >(3):考希克客户(4):Chaitali客户(5):Hardik客户(6):Komal PL/SQL过程成功完成。


    猜你喜欢

    希腊最高法院批准俄罗斯对比特币嫌疑人的请求

    希腊最高法院批准俄罗斯对比特币嫌疑人的请求希腊最高法院上周五表示,一名据称使用比特币数字货币洗钱40亿美元的俄罗斯人应该被引渡到俄罗斯,一位法院消息人士说。AlexanderV

    2019-02-01

    塑造美国网络防御的创造性破坏和自满情绪

    塑造美国网络防御的创造性破坏和自满情绪创造性的破坏,思维的范式转换取代现有的秩序,可能是一个难以捉摸的概念,但它作为人类行为驱动力的力量是不可否认的。在硅谷和其他美国的高层科技

    2019-02-01

    为什么我(非常)担心PRISM

    为什么我(非常)担心PRISM美国国家安全局正在利用我们的数字生活,监控语音电话,电子邮件,社交媒体以及谁知道什么。美国国家安全局方面的人说,这是为了国家安全;它已经停止了恐怖

    2019-02-01

    先发优势:为什么新的恶意软件最初会打败反恐

    先发优势:为什么新的恶意软件最初会打败反恐虽然反病毒解决方案可以有效对抗广泛使用的恶意软件,但是有一个很好的机会,新的恶意软件会躲过那些解决方案。最近有重大安全事件的报告激增,

    2019-02-01

    台湾银行抢劫与朝鲜黑客有关

    台湾银行抢劫与朝鲜黑客有关最近针对台湾一家银行的网络抢劫事件已被安全研究人员联系到一个据信在朝鲜境外活动的臭名昭着的威胁组织。黑客利用SWIFT全球金融网络大致窃取来自台湾远东

    2019-02-01