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_msgPL/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 ... 
随机推荐
- springboot 热加载的问题  idea下的springboot热加载的
			最近在学spring框架,使用的是springboot可以省去很多的配置,可谓是初学者的福音啊. 尤其是在刚写代码的时候,都想马上看到自己写出来的效果,看看能不能输出hello world,所以要不断 ... 
- django model:auto_now_add 和 auto_now
			创建django的model时,有DateTimeField.DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime().date().time()三中对象 ... 
- vue项目上传文件以及进度条
			最近做项目的时候,需要上传自定义镜像.并且附带进度条,上网查询一下资料,经过一番折磨,也总算做出来了,把自己写项目的内容给大家分享一下. 先直接贴代码吧 1.首先声明一个formData对象. 2.把 ... 
- Apache Commons 工具集介绍
			Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于 ... 
- hdu 1847 Good Luck in CET-4 Everybody! 组合游戏 找规律
			题目链接 题意 有\(n\)张牌,两人依次摸牌,每次摸的张数只能是\(2\)的幂次,最后没牌可摸的人为负.问先手会赢还是会输? 思路 0 1 2 3 4 5 6 7 8 9 10 11 -- P N ... 
- Python Challenge 第九关
			第九关只有一幅图,上面有一些黑点.网页名字叫:connect the dots.可能是要把这些点连起来. 查看源代码,果然有两个整数集合 first 和 second.并且有个提示:first+sec ... 
- Cryptography I 学习笔记 --- 零碎
			1. KDF(密钥推导函数,key derivation function),根据用户输入的一个初始密钥来生成一系列的后续密钥.可以使用PRF来生成 2. 可以用salt与slow hash func ... 
- HDU 5131.Song Jiang's rank list (2014ACM/ICPC亚洲区广州站-重现赛)
			Song Jiang's rank list Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 512000/512000 K (Java ... 
- (6)python tkinter-容器、子窗体
			Frame f = tkinter.Frame(width=380, height=270, bg='white').pack() LabelFrame f = tkinter.LabelFrame( ... 
- 组队训练3回放  ——hnqw1214
			组队训练3回放 练习赛过程回放: 开场先看最后一题, 发现是专题训练时做过的网络流原题, cst照着之前的打一遍,第一遍WA, 发现数组开小了,改大后AC. 这时候qw看B题, 一开始想不到方法, c ... 
