oracle学习之路(四) ---------PL/SQL 表,二维数组(TABLE)
LOB类型
ORACLE提供了LOB (Large OBject)类型。用于存储大的数据对象的类型。ORACLE眼下主要支持BFILE, BLOB, CLOB 及 NCLOB 类型。
NCLOB
存储大的NCHAR字符数据类型。每一个变量存储大字符对象的位置,该位置指到大字符数据块。大字符对象的大小<=4GB。
CLOB(Book)
存储大的字符数据类型。
每一个变量存储大字符对象的位置。该位置指到大字符数据块。大字符对象的大小<=4GB。
BLOB(Photo)
存储大的二进制数据类型。
变量存储大的二进制对象的位置。
大二进制对象的大小<=4GB。
BFILE (Movie)
存放大的二进制数据对象。这些数据文件不放在数据库里,而是放在操作系统的某个文件夹里,数据库的表里仅仅存放文件的文件夹。
BIND 变量
绑定变量是在主机环境中定义的变量。在PL/SQL 程序中能够使用绑定变量作为他们将要使用的其他变量。为了在PL/SQL 环境中声明绑定变量,使用命令VARIABLE。比如:
VARIABLE return_code NUMBER
VARIABLE return_msg VARCHAR2(20)
能够通过SQL*Plus命令中的PRINT 显示绑定变量的值。比如:
PRINT return_code
PRINT return_msg
PL/SQL 表(TABLE)
定义记录表(或索引表)数据类型。
它与记录类型类似。但它是对记录类型的扩展。它能够处理多行记录,类似于高级中的二维数组,使得能够在PL/SQL中模仿数据库中的表。
定义记录表类型的语法例如以下:
TYPE table_name IS TABLE OF element_type [NOT NULL]
INDEX BY [BINARY_INTEGER | PLS_INTEGER | VARRAY2]
EXISTS(n)假设集合的第n个成员存在,则返回true
COUNT返回已经分配了存储空间即赋值了的成员数量
FIRST:返回成员的最低下标值
LAST:返回成员的最高下标值
PRIOR(n)返回下标为n的成员的前一个成员的下标。
假设没有则返回NULL
NEXT(N)返回下标为n的成员的后一个成员的下标。假设没有则返回NULL
TRIM:删除末尾一个成员
TRIM(n) :删除末尾n个成员
DELETE:删除全部成员
DELETE(n) :删除第n个成员
DELETE(m, n) :删除从n到m的成员
EXTEND:加入一个null成员
EXTEND(n):加入n个null成员
EXTEND(n,i):加入n个成员。其值与第i个成员同样
LIMIT返回在varray类型变量中出现的最高下标值
- 第一个样例
声明一个表类型,一个数字进行循环,第一个循环通过四次循环,往表类型数组中插入4条记录,第二个循环通过循环整个表数组,输出我们所须要的数据,
DECLARE
TYPE dept_table_type IS TABLE OF
dept%ROWTYPE INDEX BY BINARY_INTEGER;
my_dname_table dept_table_type;
v_count number(2) :=4;
BEGIN
FOR int IN 1 .. v_count LOOP
SELECT * INTO my_dname_table(int) FROM dept WHERE deptno=int*10;
END LOOP;
FOR int IN my_dname_table.FIRST .. my_dname_table.LAST LOOP
DBMS_OUTPUT.PUT_LINE('Department number: '||my_dname_table(int).loc);
DBMS_OUTPUT.PUT_LINE('Department name: '|| my_dname_table(int).dname);
END LOOP;
END;
- 第二个样例
写一个一维数组,赋值。并循环输出
declare
--定义记录表数据类型
TYPE reg_table_type IS TABLE OF varchar2(25)
INDEX BY BINARY_INTEGER;
--声明记录表数据类型的变量
v_reg_table reg_table_type;
i int :=1;
begin
v_reg_table(1):='李岩昊1';
v_reg_table(2):='李岩昊2';
v_reg_table(3):='李岩昊3';
v_reg_table(4):='李岩昊4';
v_reg_table(5):='李岩昊5';
FOR INT IN i .. v_reg_table.LAST LOOP
DBMS_OUTPUT.put_line('我第'||i||'个名字'||v_reg_table(i));
i:=i+1;
END LOOP;
end;
- 第三个样例:按二维数组使用记录表
declare
--定义记录表数据类型
TYPE employee_table_type IS TABLE OF t_employee%ROWTYPE
INDEX BY BINARY_INTEGER;
--声明记录表数据类型的变量
my_employee_table employee_table_type;
i int :=1;
begin
SELECT fnumber,fname,fage,fsalary
INTO my_employee_table(1).fnumber,my_employee_table(1).fname,my_employee_table(1).fage,my_employee_table(1).fsalary
FROM t_employee
WHERE t_employee.fnumber='DEV002';
SELECT fnumber,fname,fage,fsalary
INTO my_employee_table(2).fnumber, my_employee_table(2).fname, my_employee_table(2).fage, my_employee_table(2).fsalary
FROM t_employee
WHERE t_employee.fnumber='SALES001';
FOR int IN i .. 2 LOOP
Dbms_Output.put_line('雇员 DEV002:'||my_employee_table(i).fname);
i:=i+1;
END LOOP;
end;
oracle学习之路(四) ---------PL/SQL 表,二维数组(TABLE)的更多相关文章
- 【学习笔记】【C语言】二维数组
1. 什么是二维数组 一个数组能表示一个班人的年龄,如果想表示很多班呢? 什么是二维数组?int ages[3][10]; 三个班,每个班10个人 相当于3行10列 相当于装着3个一维数组 二维数组是 ...
- Oracle学习笔记十 使用PL/SQL
PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言,是对 SQL 的扩展,它支持多种数据类型,如大对象和集合类型,可使用 ...
- oracle学习笔记4:PL/SQL
PL/SQL是没命名的存储过程,函数,触发器,PL/SQL块的语法格式如下: [declare] --声明部分,可选 begin --执行部分,必须 [exception] --异常处理部分,可选 e ...
- Oracle 学习笔记 17 -- 异常处理(PL/SQL)
程序异常是在操作期间正常,出现在节目的准备过程是不可避免的例外.但是,必须有一个相应的异常处理机 制,以保证程序的正常运行.PL/SQL程序运行过程中出现的错误.称为异常. 一个优秀的程序都应该可以正 ...
- oracle 学习(五)pl/sql语言存储过程&包
首先搞清楚俩概念 存储过程(procedure)&程序包(package) 存储过程:数据库对象之一,可以理解为数据库的子程序,在客户端和服务器端可以直接调用它.触发器是与表直接关联的特殊存储 ...
- Oracle学习(十四)分表分区
一.前言 大数据量的查询,不仅查询速度非常慢,而且还会导致数据库经常宕机,在尝试添加索引及查询方式修改后,还有没有更有效的解决方案呢? 分库.分表.分区这些概念咱就应该了解一下. 二.分表 假如一个大 ...
- Oracle——学习之路(视图——虚拟表)
语法: create [or replace] view 视图名 as 查询相关语句 ps: or replace 表示新视图可以覆 ...
- oracle 学习(三)pl/sql语言函数
系统内置函数 数学运算函数 字符串函数 统计函数 日期函数 用户定义函数:存储在数据库中的代码块,可以把值返回到调用程序.调用时如同系统函数一样 参数模式 IN模式:表示该参数时输入给函数的参数 OU ...
- 二级数组省市表(二维数组json)
<一省份.城市二级联动+vue搭架> a. template部分 <section class="edit__place"> <select v-mo ...
随机推荐
- 清理雪道(bzoj 2502)
Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定时 ...
- 洛谷 [P3338] 力
FFT \[E_i = F_i / q_i = \sum_{i<j} \frac {q_j} {(i - j)^2} - \sum _{ i > j} \frac{q _ j} {(i - ...
- SQL优化 ASP.NET ADO.NET
原文发布时间为:2009-08-26 -- 来源于本人的百度文章 [由搬家工具导入] 总的考虑方向 1) 根据数据使用的方式来设计数据访问层 2) 缓存数据,避免不必要的操 ...
- linux多线程学习笔记五--线程安全【转】
转自:http://blog.csdn.net/kkxgx/article/details/7506085 版权声明:本文为博主原创文章,未经博主允许不得转载. 一,线程安全基础 一个函数被称为线程安 ...
- android基本控件学习-----ToggleButton&Switch
ToggleButton(开关按钮)和Switch(开关)讲解: 一.核心属性讲解: (1)ToggleButton textOn:按钮被选中的时候文字显示 textOff:按钮没有被选中的时候文字显 ...
- Android开发基础(java)1
基本概念: 一.结构化方法与结构化程序设计 1.结构化方法:源自迪克斯特拉(E.W.Dijkstra)提出的结构化概念,采用自顶向下.逐步求精的模块化设计方法.核心是将工作分成若干个相互独立的模块,使 ...
- python的特殊方法总结
1.跟运算相关的特殊方法 2.跟运算符相关的方法
- 解决IE6的PNG透明
http://www.jb51.net/article/35669.htm http://blog.csdn.net/mosliang/article/details/6760028
- springBoot AOP切面编程
AOP 为 Aspect Oriented Programming 的缩写,意为 面向切面编程.AOP 为spring 中的一个重要内容,它是通过对既有程序定义一个切入点,然后在其前后切入不同的执行内 ...
- Android Studio插件Gsonformat的安装和使用
在开发中,我们获得服务端的json数据后要建立自己的bean,但是一条一条写相当麻烦,使用了GsonFormat插件,用起来非常方便. 安装 方法1: 1.Android studio File-&g ...