PL/SQL集合 ----- varrays
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的更多相关文章
- PL/SQL — 集合及常用方法
PL/SQL中提供了常用的三种集合联合数组.嵌套表.变长数组,而对于这几个集合类型中元素的操作,PL/SQL提供了相应的函数或过程来操纵数组中的元素或下标.这些函数或过程称为集合方法.一个集合方法就是 ...
- Oracle错误(包括PL/SQL)集合与修复
+-----------------------------------------------------------------------+ | 在本篇随笔中,仅根据个人经验累积错误进行描述 ...
- PL/SQL集合(一):记录类型(TYPE 类型名称 IS RECORD)
记录类型 利用记录类型可以实现复合数据类型的定义: 记录类型允许嵌套: 可以直接利用记录类型更新数据. 传统操作的问题 对于Oracle数据类型,主要使用的是VARCHAR2.NUMBER.DATE等 ...
- PL/SQL学习笔记之集合
一:PL/SQL集合 集合是一个有序且存有相同的类型数据的数据结构. PL/SQL提供了三种集合类型: 索引表(关联数组) 嵌套表 数组 二:索引表:一个索引表(也叫关联数组)是一组键 - 值对.每个 ...
- PL/SQL — 变长数组
PL/SQL变长数组是PL/SQL集合数据类型中的一种,其使用方法与PL/SQL嵌套表大同小异,唯一的区别则是变长数组的元素的最大个数是有限制的.也即是说变长数组的下标固定下限等于1,上限可以扩展.下 ...
- PL/SQL --> 动态SQL调用包中函数或过程
动态SQL主要是用于针对不同的条件或查询任务来生成不同的SQL语句.最常用的方法是直接使用EXECUTE IMMEDIATE来执行动态SQL语句字符串或字符串变量.但是对于系统自定义的包或用户自定的包 ...
- PL/SQL批处理语句(BULK COLLECT子句和FORALL语句)
Oracle为PL/SQL中的SQL相关功能提供了FORALL语句和BULK COLLECT子句,显著的增强了SQL相关功能.这两个语句一起被称作PL/SQL的批处理语句.Oracle为什么要提供这两 ...
- PL/SQL详细介绍,设置oracle相关
1. 实现参照完整性 指若两个表之间具有主从关系(即主外键关系),当删除主表数据时,必须确保相关的从表数据已经被删除. 当修改主表的主键列数据时,必须确保相关从表数据已经被修改.为了实现级 ...
- PL/SQL 训练13--plsql 优化
--数据缓存技术 --PGA和SGA---SGA:系统全局区域--PGA:Process Global Area是为每个连接到Oracle的用户进程保留的内存. ---PLSQL从PGA获取信息的速度 ...
随机推荐
- 插上腾飞的翅膀:为asp.net core添加protobuf支持
没时间解释了,快上车. 通过NuGet获取Zaabee.AspNetCoreProtobuf Install-Package Zaabee.AspNetCoreProtobuf 在Startup.cs ...
- SDP(6):分布式数据库运算环境- Cassandra-Engine
现代信息系统应该是避不开大数据处理的.作为一个通用的系统集成工具也必须具备大数据存储和读取能力.cassandra是一种分布式的数据库,具备了分布式数据库高可用性(high-availability) ...
- 关于webconsole报../website/console.go:35: undefined: ssh.InsecureIgnoreHostkey 错误解决方案
1.首先,进入webconsole目录删除/opt/webconsole/src/golang.org/x/目录下 crypto文件夹 2.然后,在/opt/webconsole/src/golang ...
- 【echarts3】--1 简单入门
echarts3 相信大家都了解吧,是百度研发的 ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8 ...
- 0基础学python3心得体会 - python3学习笔记 - python3基础
基础预热 print()会依次打印每个字符串,遇到逗号","会输出一个空格,可以打印整数,或者计算 结果 Python提供了一个input(),,可以让用户输入字符串,并存放到一个 ...
- Python3实现QQ机器人自动爬取百度文库的搜索结果并发送给好友(主要是爬虫)
一.效果如下: 二.运行环境: win10系统:python3:PyCharm 三.QQ机器人用的是qqbot模块 用pip安装命令是: pip install qqbot (前提需要有request ...
- mac中的myeclipse的控制台中文乱码问题解决办法
之前写java用到控制台的主要是字符和数字,中文输入貌似真的还没用过,所以就遇到了一个悲剧的老问题,估计每个程序员都会遇到——中文乱码. 用的是MyEclipse开发环境,Window->Gen ...
- Linux 格式化和挂载数据盘
如果您已经为 ECS 实例配了数据盘,您需要先格式化数据盘并挂载文件系统后才能正常使用数据盘. 注意: 磁盘分区和格式化是高风险行为,请慎重操作.本文档描述如何处理一个新买的数据盘,如果您的数据盘上有 ...
- linux shell 和linux 命令的区别?windows shell 和 windows 命令呢?
shell翻译成壳的意思,它是包裹在linux内核外层的,一个可通过一系列的linux命令对操作系统发出相关指令的人机界面. shell可以通过其条件语句和循环语句等,把一系列linux命令结合在一起 ...
- JDBC数据库操作
JDBC: 创建SQL语句对象 Statement statement = (Statement) con.createStatement() ; 调用执行 statement. ...