PL/SQL表

一,什么是PL/SQL表?

首先PL/SQL表和记录(Record)一样,都是复合数据类型。可以看做是一种用户自定义数据类型。

PL/SQL表由多列单行的标量构成的临时索引表对象。组成类似于一维数组。

区别和联系记录(Record)的单行多列和物理存储数据的表。

Record + PL/SQL表可以进行数据的多行多列存储。

生命周期在程序块内。

二,PL/SQL表的组成结构

PL/SQL表只有两列,其中第一列为索引列为Integer类型索引列,9i后可以支持字符索引。第二列为用户自定义列,声明用户可用列类型.

通过索引列中的索引值来操作PL/SQL表中对应的用户自定义列。类似于键值对。

确保索引值的唯一性。如果索引值重复不会报错,会覆盖前面的值。

三,如何创建和使用PL/SQL表?

①声明PL/SQL表类型对象

语法:

   TYPE PL/SQL表名 IS TABLE OF 可用列类型 [NOT NULL]

    INDEX BY BINARY_INTEGER;



可用列类型可以为Oracle的数据类类型以及用户自定义类型;



属性方法:

   count --返回pl/sql表的总行数;

   delect --删除pl/sql表的所有内容;

   delect(行数) --删除pl/sql表的指定的行;

   delct(开始行,结束行) --删除pl/sql表的多行;

   first --返回表的第一个INDEX;

   next(行数) --这个行数的下一条的INDEX;

   last --返回表的最后一个INDEX;



②声明PL/SQL表类型变量:

语法:

   PL/SQL表类型变量名   PL/SQL表类型;



③数据填充和访问

语法:

   PL/SQL表类型变量名(索引列值) := 填充声明类型值;

  

   PL/SQL表类型变量名.属性方法名;

例子:

  ---PLSQL 表,先定义表类型,再定义表变量  l  类似于JAVA中的数组
declare
type ename_table_type is table of emp.ename%type index by binary_integer;
ename_table ename_table_type;
begin
select ename into ename_table(-1) from emp where empno=7788;
dbms_output.put_line('雇员名:'||ename_table(-1));
end; declare
type mytabtype is table of varchar2(10) index by binary_integer;
mytab mytabtype;
vn number(4);
begin
mytab(1):='A';
mytab(2):='B';
mytab(3):='C';
vn:=mytab.first;
dbms_output.put_line('first index: '||vn);
vn :=mytab.last;
dbms_output.put_line('last index: '||vn);
DBMS_OUTPUT.PUT_LINE(' First值:'||MyTab(MyTab.First));
end;

例子:使用循环填充和访问PL/SQL表例子:使用循环填充和访问PL/SQL表例子:使用循环填充和访问PL/SQL表例子:使用循环填充和访问PL/SQL表  例子:使用循环填充和访问PL/SQL表

--使用循环填充和访问PLSQL表
declare
type mytabtype is table of varchar2(10) index by binary_integer;
mytab mytabtype;
vn number;
begin
for varE in (select empno,ename from emp a order by ename)
loop
mytab(varE.empno):=varE.ename;
end loop;
vn:=mytab.first;
for i in 1.. mytab.count
loop
dbms_output.put_line(vn||'=='||mytab(vn));
vn:=mytab.next(vn);
end loop;
end;
--向PLSQL表中插入数据 .
declare
type mytabtype is table of varchar2(10) index by binary_integer;
mytab mytabtype;
begin
mytab(1):='A';
mytab(2):='B';
mytab(3):='C';
dbms_output.put_line('index 3:'|| mytab(3));
mytab(3):='D';
dbms_output.put_line('index 3:'|| mytab(3));
end;

PLSQL表的更多相关文章

  1. plsql 表数据中文显示乱码(配置环境变量)

      plsql 表数据中文显示乱码(配置环境变量) CreateTime--2018年4月23日19:32:37 Author:Marydon 1.情景再现 2.解决方案 配置环境变量 变量名:NLS ...

  2. 关于plsql表如何创建自增长列

    1首先在sequence中创建新序列 在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方. 这是语句创建 create sequence ide ...

  3. PLSQL学习教程(全)

    基于ORACLE9i+PL/SQLDeveloper7.1.4) 课程 一 PL/SQL 基本查询与排序 本课重点: 1.写SELECT语句进行数据库查询 2.进行数学运算 3.处理空值 4.使用别名 ...

  4. Oracle总结之plsql编程(基础八)

    原创作品,转自请注明出处:https://www.cnblogs.com/sunshine5683/p/10328524.html 一.函数 1.函数是可以返回一个特定的数据,函数的创建中必须包含re ...

  5. plsql oracle 使用教程

    课程 一 PL/SQL 基本查询与排序 本课重点: 1.写SELECT语句进行数据库查询 2.进行数学运算 3.处理空值 4.使用别名ALIASES 5.连接列 6.在SQL PLUS中编辑缓冲,修改 ...

  6. plsql实例精讲部分笔记

    转换sql: create or replace view v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,mo ...

  7. PLSQL集合类型

    PLSQL集合类型   --联合数组(索引表) /* 用于存储某个数据类型的数据集合类型 .通过索引获得联合数组中得值 如下例子: */ DECLARE CURSOR cur_chars IS SEL ...

  8. Oracle错误览表

    Oracle 错误总结及问题解决 ORA     本文转自:https://www.cnblogs.com/zhangwei595806165/p/4972016.html  作者@承影剑 ORA-0 ...

  9. Oracle Ora 错误解决方案合集

    注:本文来源于 < Oracle学习笔记 --- Oracle ORA错误解决方案 > ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发 ...

随机推荐

  1. Struts 1 之文件上传

    Struts 1 对Apache的commons-fileupload进行了再封装,把上传文件封装成FormFile对象 定义UploadForm: private FormFilefile; //上 ...

  2. hbase高性能读取数据

    有时需要从hbase中一次读取大量的数据,同时对实时性有较高的要求.可以从两方面进行考虑:1.hbase提供的get方法提供了批量获取数据方法,通过组装一个list<Get> gets即可 ...

  3. Spark内存管理-UnifiedMemoryManager和StaticMemoryManager

    在Spark-1.6.0中,引入了一个新的参数spark.memory.userLegacyMode(默认值为false),表示不使用Spark-1.6.0之前的内存管理机制,而是使用1.6.0中引入 ...

  4. Hibernate之多对多表,操作实例

    多表操作之多对多关系简介 思路就是: 在数据库底层通过添加中间表来指定关联关系. 在双方的实体中添加一个保存对方的集合 在双方的配置文件中使用set标签和many-to-many标签来进行关联关系的配 ...

  5. EasyUI表单验证,自定义插件验证,自定义js插件验证,远程验证,常见手机号,中英文,qq等验证规则验证

     { field : 'startPort', title : "起始端口", editor: "text", width : 50, editor: { ...

  6. 【一天一道LeetCode】#258. Add Digits

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  7. 【java虚拟机系列】java中类与对象的加载顺序

    首先了解一下Java虚拟机初始化的原理. JVM通过加装.连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用.类型的生命周期如下图所示: 装载和连接必须在初始化之前就要完成. 类 ...

  8. win7 VMware CentOS桥接(bridge)模式网络配置

    主要内容参考自: centos下vmware 桥接设置静态ip例子 关于虚拟机网络配置的文章: Win7+VMware Workstation环境下的CentOS-Linux网络连接设置(推荐阅读) ...

  9. java实现:将一个数各个位数相加

    前面已经实现过这个程序,现在我们就不多说了,直接更改C的源码,实现这个JAVA程序. import java.util.Scanner; public class HelloWorld { publi ...

  10. numpy教程:矩阵matrix及其运算

    http://blog.csdn.net/pipisorry/article/details/48791403 numpy矩阵简介 NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组ar ...