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. Optimal Marks(optimal)

    Optimal Marks(optimal) 题目描述 定义无向图边的值为这条边连接的两个点的点权异或值. 定义无向图的值为无向图中所有边的值的和. 给定nn个点mm条边构成的图.其中有些点的权值是给 ...

  2. Java中Collections的sort方法和Comparable与Comparator的比较

    一.Comparable 新建Student1类,类实现Comparable接口,并重写compareTo方法 public class Student1 implements Comparable& ...

  3. JavaScript内部是这样运行

    编译阶段 词法分析(Lexing) 这个过程会将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代 码块被称为词法单元(token). 简单举个例子:c = b - a 转换为 NAME ...

  4. golang xorm reverse 自动生成数据库实体文件

    一.先安装好需要的东西 xorm 也可以参考官方文档 readme.md https://github.com/go-xorm/cmd 和 http://xorm.io/docs/ go get gi ...

  5. Codeforces Gym101502 E.The Architect Omar-find()函数

    E. The Architect Omar   time limit per test 1.0 s memory limit per test 256 MB input standard input ...

  6. luogu P3376 【模板】网络最大流(no)ek

    题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...

  7. HDU - 2970 Suffix reconstruction

    Discription Given a text s[1..n] of length n, we create its suffix array by taking all its suffixes: ...

  8. NOI模拟题6 Problem C: Circle

    Solution 首先这个矩阵, 很明显的就是Vandermonde矩阵. 我们有公式: \[ |F_n| = \prod_{1 \le j < i \le n} (a_i - a_j) \] ...

  9. UVA 11039 Building designing 贪心

    题目链接:UVA - 11039 题意描述:建筑师设计房子有两条要求:第一,每一层楼的大小一定比此层楼以上的房子尺寸要大:第二,用蓝色和红色为建筑染色,每相邻的两层楼不能染同一种颜色.现在给出楼层数量 ...

  10. ios svn学习笔记(一)

    1, 遇到问题 git add in Xcode generates com.apple.dt.IDESourceControlErrorDomain error -70 这个错误发生在要右键选择要c ...