varrays可以再表,记录,对象定义中使用,类似于C中的数组。
1.定义varrays用作PL/SQL程序构造块。
declare
type integer_varray is varray(3) of integer; --定义int型varray,含3行
var_int integer_varray:=integer_varray(); --声明var_int的varray 变量
begin
for i in 1..3 loop --为var_int赋值
var_int.extend;
var_int(i):=10+i;
end loop; DBMS_OUTPUT.PUT_LINE('Varray initalized as vaules.');
DBMS_OUTPUT.PUT_LINE('------------------------------'); for i in 1..3 loop
DBMS_OUTPUT.PUT('Integer Varray ['||i||']');
DBMS_OUTPUT.PUT_LINE('['var_int(i)||']');
end loop; end;
/

Varray initalized as vaules.
------------------------------
Integer Varray [1] [11]
Integer Varray [2] [12]
Integer Varray [3] [13]

2.定义varrarys  用PL/SQL对象类型
create or replace type integer_varray
as varray(3) of integer;
/ declare
var_int integer_varray:=
interger_varry(null,null,null); for i in 1..3 loop --为var_int赋值
var_int.extend;
var_int(i):=10+i;
end loop; DBMS_OUTPUT.PUT_LINE('Varray initalized as vaules.');
DBMS_OUTPUT.PUT_LINE('------------------------------'); for i in 1..3 loop
DBMS_OUTPUT.PUT('Integer Varray ['||i||']');
DBMS_OUTPUT.PUT_LINE('['var_int(i)||']');
end loop; end;
/

Varray initalized as vaules.
------------------------------
Integer Varray [1] [11]
Integer Varray [2] [12]
Integer Varray [3] [13]

3.在数据库表中使用varrays
--1.创建varrays类型
crate or replace type address_varray
as varray(3) of varchar(30);
/
--2.用varrays创建表
create table address
(
address_id interger not null,
individual_id interger not null,
street_address address_varray not null,
city varchar(10 char)
)
--3.在数据库操作中使用varrays
insert
into addresses
vaules
(
1,
1,
address_varray(
'office of sentor',
'450 street paseo',
'suit 2000'
)
'Tucson'
);
--4.在数据库里查询varrays
->varrays无法直接查询,得不到期望结果
select street_address
from addresses
where adress_id=1; ->varrays无法直接查询,需要借助嵌套表 create or replace type varray_nested_table
is table of varchar(30 char);
/ ---创建嵌套表 col column_vaule format a30
select column_vaule
from THE(select
cast(street_address as varray_nested_table)
from addresses
where adress_id=1;
)
column_vaule
-----------------
office of sentor
450 street paseo
suit 2000

--5.在数据库中更新varrays内容
>更新varrays全部内容
updare addresses
set street_address=
address_varray(
'office of sentor',
'450 street paseo',
'suit 1150'
)
where address_id=1;
 > 更新varrays部分内容
>PL/SQL不支持直接更新varrays部分内容,需要使用PL/SQL程序才能更新部分内容
declare
type address_type is record
(
address_id interger not null,
individual_id interger not null,
street_address address_varray not null,
city varchar(10 char)
);
address address_type; cursor get_street_address
(address_id_in integer) is
select *
from address_id=address_id_in; open get_street_address(1); fetch get_street_address
into address; close get_street_address; address.street_address(1)='office of shanghai'; update adresses
set street_address=address.street_address;
where address_id=1;
end;
/

PL/SQL集合 ----- varrays的更多相关文章

  1. PL/SQL — 集合及常用方法

    PL/SQL中提供了常用的三种集合联合数组.嵌套表.变长数组,而对于这几个集合类型中元素的操作,PL/SQL提供了相应的函数或过程来操纵数组中的元素或下标.这些函数或过程称为集合方法.一个集合方法就是 ...

  2. Oracle错误(包括PL/SQL)集合与修复

    +-----------------------------------------------------------------------+ |   在本篇随笔中,仅根据个人经验累积错误进行描述 ...

  3. PL/SQL集合(一):记录类型(TYPE 类型名称 IS RECORD)

    记录类型 利用记录类型可以实现复合数据类型的定义: 记录类型允许嵌套: 可以直接利用记录类型更新数据. 传统操作的问题 对于Oracle数据类型,主要使用的是VARCHAR2.NUMBER.DATE等 ...

  4. PL/SQL学习笔记之集合

    一:PL/SQL集合 集合是一个有序且存有相同的类型数据的数据结构. PL/SQL提供了三种集合类型: 索引表(关联数组) 嵌套表 数组 二:索引表:一个索引表(也叫关联数组)是一组键 - 值对.每个 ...

  5. PL/SQL — 变长数组

    PL/SQL变长数组是PL/SQL集合数据类型中的一种,其使用方法与PL/SQL嵌套表大同小异,唯一的区别则是变长数组的元素的最大个数是有限制的.也即是说变长数组的下标固定下限等于1,上限可以扩展.下 ...

  6. PL/SQL --> 动态SQL调用包中函数或过程

    动态SQL主要是用于针对不同的条件或查询任务来生成不同的SQL语句.最常用的方法是直接使用EXECUTE IMMEDIATE来执行动态SQL语句字符串或字符串变量.但是对于系统自定义的包或用户自定的包 ...

  7. PL/SQL批处理语句(BULK COLLECT子句和FORALL语句)

    Oracle为PL/SQL中的SQL相关功能提供了FORALL语句和BULK COLLECT子句,显著的增强了SQL相关功能.这两个语句一起被称作PL/SQL的批处理语句.Oracle为什么要提供这两 ...

  8. PL/SQL详细介绍,设置oracle相关

    1. 实现参照完整性      指若两个表之间具有主从关系(即主外键关系),当删除主表数据时,必须确保相关的从表数据已经被删除.  当修改主表的主键列数据时,必须确保相关从表数据已经被修改.为了实现级 ...

  9. PL/SQL 训练13--plsql 优化

    --数据缓存技术 --PGA和SGA---SGA:系统全局区域--PGA:Process Global Area是为每个连接到Oracle的用户进程保留的内存. ---PLSQL从PGA获取信息的速度 ...

随机推荐

  1. 开源中文分词工具探析(五):Stanford CoreNLP

    CoreNLP是由斯坦福大学开源的一套Java NLP工具,提供诸如:词性标注(part-of-speech (POS) tagger).命名实体识别(named entity recognizer ...

  2. Redis .Net 基本类型使用之南

    前言 最近需要使用redis,看了一些文档,也在博客园里面看了很多文章,这里就记录下Redis常用类型的操作. String string是redis基本类型,一般通过Get,Set 命令进行操作,这 ...

  3. cmake编译安装mysql 5.6.12

    cmake安装mysql 5.6.12 从mysql 5.5 开始就要用cmake编译安装 下载mysql 下载地址:http://pan.baidu.com/s/1o68xxqE 一.安装mysql ...

  4. Android图像处理 - 高斯模糊的原理及实现

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 由 天天P图攻城狮 发布在云+社区 作者简介:damonxia(夏正冬),天天P图Android工程师 前言 高斯模糊是图像处理中几乎每个程序员 ...

  5. Vue.js搭建路由报错 router.map is not a function,Cannot read property ‘component’ of undefined

    错误: 解决办法: 2.0已经没有map了,使用npm install vue-router@0.7.13 命令兼容1.0版本vue 但是安装完之后会出现一个错误: Cannot read prope ...

  6. BZOJ 3091: 城市旅行 [LCT splay 期望]

    3091: 城市旅行 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1454  Solved: 483[Submit][Status][Discuss ...

  7. mongodb window安装配置

    下载mongodb安装包 1. https://www.mongodb.org/dl/win32/x86_64-2008plus-ssl?_ga=2.233271640.711265466.15193 ...

  8. 【Oracle】-初识PL/SQL

    在最近的工作中要用到存储过程和函数,索性把PL/SQL整体的看一下.之前看过基本书和园子里的博文,在这里将所学简单总结. 一.基本语句 1.大小写 2.分隔符  --  : 3.引用字符串  --   ...

  9. 用mount挂载远程服务器网络硬盘

    环境: 服务器:192.168.20.204 客户端:192.168.20.203 1. 在服务器配置/etc/export  添加可以共享的文件夹和允许的客户端地址 /home/dir 192.16 ...

  10. [CJOJ2410]数列操作d

    [CJOJ2410]数列操作d 标签: 线段树 题解 没时间写题了,我来嘴巴AC吧. 注意区间加的这个值不是 确定的,随着元素位置的变化而改变. 只需要能维护这个东西剩下的就很好做了. 那么\(x*( ...