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获取信息的速度 ...
随机推荐
- 【django之用户认证】
一.auth模块 模块导入 from django.contrib import auth 主要方法如下: 1 .authenticate() 提供了用户认证,即验证用户名以及密码是否正确,一般 ...
- MongoDB之副本集
MongoDB之副本集 一.简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库 ...
- Oracle打印日历功能
Oracle用SQL打印日历 1.1 打印当月日历 , D, NULL)) SUN, , D, NULL)) MON, , D, NULL)) TUE, , D, NULL)) WED, , D, ...
- Hadoop学习笔记三
一.设置HDFS不进行权限检查 默认的HDFS上的文件类似于Linux中的文件,是有权限的.例如test用户创建的文件,root用户如果没有写权限,则不能进行删除. 有2种办法进行修改,修改文件的权限 ...
- POJ 1625 Censored! [AC自动机 高精度]
Censored! Time Limit: 5000MS Memory Limit: 10000K Total Submissions: 9793 Accepted: 2686 Descrip ...
- Oracle的order by的中文排序问题
Oracle 中查询结果按照某个中文字段或者英文字母(包括 符号)排序,并不会得到我们预期的结果,因为对于中文与英文字母及符号,Oracle实际是按照其对应的ASCII码值排序的! 可以看到按照中文村 ...
- Appium的iOS环境搭建
操作系统的名称:Mac OS X操作系统的版本:10.13.3 xcode 版本:9.2 java 版本:java8_161 appium destop版本:1.7.3 接下来我们开始踏上搭建Appi ...
- CSS3 @keyframes 用法(简单动画实现)
定义: 通过 @keyframes 规则,能够创建动画. 创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式. 在动画过程中,可以多次改变这套 CSS 样式. 以百分比来规定改变发生的时间,或 ...
- curl模拟请求
GET请求 <?php //初始化 $curl = curl_init(); //设置抓取的url curl_setopt($curl, CURLOPT_URL, 'http://www.bai ...
- Ubuntu下利用Apache转发模块实现反向代理
Apache的反向代理主要利用转发模块,proxy和proxy_http 先配置 Apache 支持proxy 和 proxy_http 在Ubuntu系统下,Apache的配置文件在目录/etc/a ...