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. cf 701 E - Connecting Universities

    Descrition 给你一颗\(n\le 2*10^5\)个点的树, 有\(2*k(2k\le n)\)座大学座落在点上 (任二大学不在同一个点) 求一种两两匹配的方案, 使得距离和最大 即\[ma ...

  2. 传送带(bzoj 1857)

    Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度 ...

  3. 地精部落(bzoj 1925)

    Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi, ...

  4. POJ1195Mobile phones

    二维树状数组板子题. #include<cstdio> #include<cstring> #include<iostream> #include<cstdl ...

  5. BitmapData处理图像例子【逆反处理】

    原文发布时间为:2009-01-16 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Collections.Generic;using Syste ...

  6. class.getDeclaredFields()与class.getFields()

    * getFields()与getDeclaredFields()区别:getFields()只能访问类中声明为公有的字段,私有的字段它无法访问.getDeclaredFields()能访问类中所有的 ...

  7. Google的新一代一致性哈希算法

    先看到了一篇中文文章:谷歌退出有界负载的一致性哈希算法 然后找到了它对应的英文原文 以及它的英文paper,24页 又找到一篇博客,发现已经有人将它在haproxy上实现了,haproxy1.7.5上 ...

  8. (0)git安装

    windows安装 https://blog.csdn.net/sishen47k/article/details/80211002

  9. (9)centos下防火墙firewalld设置

    学习apache安装的时候需要打开80端口,由于centos 7版本以后默认使用firewalld后,网上关于iptables的设置方法已经不管用了,想着反正iptable也不会用,索性直接搬官方文档 ...

  10. Unique Binary Search Trees II - LeetCode

    Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...