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获取信息的速度 ...
随机推荐
- MUI 图片上传实现
HTML代码 <!doctype html> <html> <head> <meta charset="UTF-8"> <ti ...
- BZOJ 1042: [HAOI2008]硬币购物 [容斥原理]
1042: [HAOI2008]硬币购物 题意:4种硬币.面值分别为c1,c2,c3,c4.1000次询问每种硬币di个,凑出\(s\le 10^5\)的方案数 完全背包方案数? 询问太多了 看了题解 ...
- BZOJ 3670: [Noi2014]动物园 [KMP]
求这玩意: 对于字符串S的前i个字符构成的子串,既是它的后缀同时又是它的前缀,并且该后缀与该前缀不重叠,将这种字符串的数量记作num[i] 对1,000,000,007取模的结果 n≤5,L≤1,00 ...
- BZOJ 2754: [SCOI2012]喵星球上的点名 [后缀数组+暴力]
2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1906 Solved: 839[Submit][St ...
- 利用Effmpeg 提取视频中的音频(mp3)
在B站看到一个up发的病名为爱的钢琴曲,感觉很好听,然后当然是要加入歌单啊.然而不知道怎么转换成mp3,找来找去找到了EFFmpeg 这篇只是达到了我简单的需求,以后可能会有EFFmpeg更详细的使用 ...
- 剑指offer试题(PHP篇四)
16.合并两个排序的链表 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 时间限制:1秒 空间限制:32768K <?php /*c ...
- C#写鞍点问题
题目: 编写程序,找一找一个二维数组中的鞍点(即该位置上的元素值在行中最大,在列上最小.有可能数组没有鞍点). 要求 * 二维数组的大小.数组元素的值在运行时输入: * 程序有友好的提示信息 usin ...
- ES6,数组遍历
ES6提供了entries(),keys(),values()方法返回数组的遍历器,对于遍历器(Iterator)可以使用for...of进行便利,也可是使用entries()返回的遍历器Iterat ...
- nginx/php-fpm 访问php文件直接下载而不运行
遇到这种问题,首先确认你web服务器配置中的.PHP是不是被指定给FastCGI server处理: location ~ .php$ { fastcgi_pass ; } 如已配置,那么可能是由于f ...
- [求助][SPOJ MARIOGAM]-高斯消元(内含标程,数据等)
小蒟蒻开始做概率的题之后,遇到了这道题,然而,他发现自己的程序调试了无数次也无法通过,系统总是返回令人伤心的WA, 于是,他决定把这一天半的时间收集到的资料放在网上, 寻求大家的帮助, 也可以节省后来 ...