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)的更多相关文章

  1. 【学习笔记】【C语言】二维数组

    1. 什么是二维数组 一个数组能表示一个班人的年龄,如果想表示很多班呢? 什么是二维数组?int ages[3][10]; 三个班,每个班10个人 相当于3行10列 相当于装着3个一维数组 二维数组是 ...

  2. Oracle学习笔记十 使用PL/SQL

    PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言,是对 SQL 的扩展,它支持多种数据类型,如大对象和集合类型,可使用 ...

  3. oracle学习笔记4:PL/SQL

    PL/SQL是没命名的存储过程,函数,触发器,PL/SQL块的语法格式如下: [declare] --声明部分,可选 begin --执行部分,必须 [exception] --异常处理部分,可选 e ...

  4. Oracle 学习笔记 17 -- 异常处理(PL/SQL)

    程序异常是在操作期间正常,出现在节目的准备过程是不可避免的例外.但是,必须有一个相应的异常处理机 制,以保证程序的正常运行.PL/SQL程序运行过程中出现的错误.称为异常. 一个优秀的程序都应该可以正 ...

  5. oracle 学习(五)pl/sql语言存储过程&包

    首先搞清楚俩概念 存储过程(procedure)&程序包(package) 存储过程:数据库对象之一,可以理解为数据库的子程序,在客户端和服务器端可以直接调用它.触发器是与表直接关联的特殊存储 ...

  6. Oracle学习(十四)分表分区

    一.前言 大数据量的查询,不仅查询速度非常慢,而且还会导致数据库经常宕机,在尝试添加索引及查询方式修改后,还有没有更有效的解决方案呢? 分库.分表.分区这些概念咱就应该了解一下. 二.分表 假如一个大 ...

  7. Oracle——学习之路(视图——虚拟表)

    语法: create [or replace] view 视图名  as  查询相关语句                                 ps: or replace 表示新视图可以覆 ...

  8. oracle 学习(三)pl/sql语言函数

    系统内置函数 数学运算函数 字符串函数 统计函数 日期函数 用户定义函数:存储在数据库中的代码块,可以把值返回到调用程序.调用时如同系统函数一样 参数模式 IN模式:表示该参数时输入给函数的参数 OU ...

  9. 二级数组省市表(二维数组json)

    <一省份.城市二级联动+vue搭架> a. template部分 <section class="edit__place"> <select v-mo ...

随机推荐

  1. Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] E 三分+连续子序列的和的绝对值的最大值

    E. Weakness and Poorness time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  2. express中放置静态文件

    不使用模版引擎的话要直接添加html,可以使用express.static()中间件设定静态文件目录,然后将html文件放在里面,如:express默认静态文件目录为 app.use(express. ...

  3. Long.ValueOf("String") Long.parseLong("String") 区别 看JAVA包装类的封箱与拆箱

    IP地址类型转换原理: 将一个点分十进制IP地址字符串转换成32位数字表示的IP地址(网络字节顺序). 将一个32位数字表示的IP地址转换成点分十进制IP地址字符串. 1.Long.ParseLong ...

  4. 大楼(bzoj 2165)

    Description xz是一个旅游爱好者,这次他来到了一座新的城市.城市中央有一幢高耸入云的大楼.这幢楼到底有多少层呢?据说和非负整数的个数是一样多的.xz想爬上这座大楼来观赏新城市的全景.这幢大 ...

  5. POJ1716 Integer Intervals

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13984   Accepted: 5943 Description An i ...

  6. javascript草稿

    原文发布时间为:2011-06-01 -- 来源于本人的百度文章 [由搬家工具导入]   @MyHelper.Script("jquery-1.6.1.min.js", Url)  ...

  7. soc与cpu区别

    soc(System on Chip)片上系统cpu只包括运算器和控制器.早期 的系统是指在PCB上有cpu和Nand控制器,LCD控制器之类的控制器,构成一个系统. cpu和这些控制器之间用pcb板 ...

  8. iOS关于本地推送

      不多说 直接上代码 
 NSDate *now = [NSDate date]; UILocalNotification *reminderNotification = [[UILocalNoti ...

  9. PHP json_encode 转换成空对象和空数组

    对于以下对象 $foo = array( "bar1" => array(), "bar2" => array() ); 我想转换成 { " ...

  10. Java微信开发以及对各种云的评价

    目前一个人用Java开发一个微信的会员系统,开发已经结束,现在进入测试阶段. 有一些时间看看市面上的一些Java的微信开发视频,看了一下北风网的<微信公众平台开发Java版第一季>中的1, ...