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获取信息的速度 ...
随机推荐
- 用icas下载文件报错
前段时间服务器升级,过程中测试到报表下载,报表下载要用到icas,用的是sdts-client.jar,但是此jar包有两种连接模式,分别为: public static final SdtsConn ...
- 策略模式(Strategy Method)
策略模式可以看做“可插入式算法(Pluggable)”,将子类各自的行为和公共的逻辑分离开来,将子类的行为抽象为算法插入到公共的逻辑中,这样替换子类的行为也不会对公共逻辑产生影响,也不会影响到调用类的 ...
- xftp上传失败之解决办法
修改/usr/local 文件夹权限 rwx 为不可读不可写第三方不可访问 报错 传输状态 恢复文件夹/usr/local 读写第三方访问权限 成功上传
- EasyUI实现更换主题能过样式添加id实现
EasyUI实现更换主题能过样式添加id实现,将原来的样式值添加到cookie中保存,这样下次浏览器访问时,就是我们原来选择的样式! 首先将easyui的样式文件加入一个ID,这里命名为easyuiT ...
- 汽车之家店铺数据抓取 DotnetSpider实战[一]
一.背景 春节也不能闲着,一直想学一下爬虫怎么玩,网上搜了一大堆,大多都是Python的,大家也比较活跃,文章也比较多,找了一圈,发现园子里面有个大神开发了一个DotNetSpider的开源库,很值得 ...
- 游戏2048源代码 - C语言控制台界面版
一.游戏介绍 <2048>是最近比较流行的一款数字游戏.原版2048首先在github上发布,原作者是Gabriele Cirulli.它是基于<1024>和<小3传奇& ...
- CocosCreator游戏开发---菜鸟学习之路(一)
PS(废话): 辞职后在家好久好久了,久到经济不允许了,接着就准备再次出去找工作了,然而工作哪有那么好找,特别是像我这种菜鸟.而且我还准备转行,准备去做游戏,技能等级接近于0,那工作就更难找了.既然如 ...
- sql server两个时间段内,求出周末的量
公司有个表记录了出差(加班)的初始时间和截止时间,现在要计算出加班时间,之前的设计并没有考虑到这部分,因此本人通过sql重新计算周末数 表formmain starttime endtime 使用游标 ...
- Oracle批量操作数据库
1:批量插入 <insert id="insertBatch" parameterType="Java.util.List" > insert in ...
- Git环境配置+VSCode中文乱码问题
异常处理汇总-开发工具 http://www.cnblogs.com/dunitian/p/4522988.html 1.VSCode中文乱码问题 (files.autoguessEncoding= ...