Oracle系列:Record + PL/SQL表
Oracle系列:Record和PL/SQL表
一,什么是记录Record和PL/SQL表?
记录Record:由单行多列的标量类型构成的临时记录对象类型。类似于多维数组。
PL/SQL表:由多行单列的索引列和可用列构成的临时索引表对象类型。类似于一维数组和键值对。
都是用户自定义数据类型。
二,Record + PL/SQL表 用途是什么?
Record + PL/SQL表可以进行数据的多行多列存储。这样我们就可使用Record + PL/SQL表在需要时封装一个临时的表对象,进行传递和操作。
通过Record自定义表结构,封装一条记录。PL/SQL表声明 可用列 类型 为Record类型(将可用列指向Record类型变量),每个索引对应一个Record类型变量。
三,使用Record + PL/SQL表进行数据的多行多列存储
①声明Record类型和PL/SQL表,
其中PL/SQL表的索引列为主键约束和唯一约束列或自增Integer。可用列为Record类型或%RowType类型。
②填充PL/SQL表可用列(Record类型):通过索引指向Record,使用Record访问记录成员。
语法:
PL/SQL表名(索引列值).记录成员 := 记录成员类型值;
或
PL/SQL表名(索引列值) := Record类型变量;
--注意其PL/SQL表中声明的可用列要和这里赋值的Record类型变量结构一样
③访问PL/SQL表
下面是例子:
/*conn scott/tiger
Create table empa as select * from emp;
*/
例子:
Declare
Type RecType Is Record
(
rno empa.empno%type,
rname empa.ename%type,
rsal empa.sal%type
);
Type TabType Is Table Of RecType Index By Binary_Integer;
MyTab TabType;
vN Number;
Begin
--填充
vN := 1;
For varR In (Select * from empa Order By empno ASC)
Loop
MyTab(vN).rno := varR.empno;
MyTab(vN).rname := varR.ename;
MyTab(vN).rsal := varR.sal;
vN := vN + 1;
End Loop;
--访问
vN := MyTab.First;
For varR In vN..MyTab.count
L
相关文档:
我在把oracle数据导入sqlserver中时,发现在oracle中字段定义为唯一索引时,不同记录的此字段如果为空不被认为是重复的,但在sqlserver中如果此字段为唯一索引字段,不允许有2个以上的空值。郁闷。所以只好将sqlserver中的唯一索引字段手工修改为几个非空的值,但这样程序肯定要进行修改了。需要在程序中为此字段设置不重复 ......
Oracle 10g statistic数据统计,Oracle会根据这些统计信息来决定是走RBO(Rule-BasedOptimization),还是走CBO(Cost-BasedOptimization),会去选择哪种执行计划更划算,影响是否走相关的索引等.如果是CBO的话,它依靠准确的(或者说比较准确的)统计信息来产生优化的执行路径,如果没有做过统计,CBO也就没有做cost评估的依据 ......
1 操作系统备份
操作系统备份和恢复实施起来比较简单,当然也比较费时,要求系统停止使用,此过程包括关闭数据库并从系统上注销所有用户。所有访问被解除之后,系统关闭并以单用户方式重新启动,控制权交给系统管理员,这一步确保没有用户应用程序软件运行,避免修改硬盘上的数据。如果这个备份用于恢复数据库系统,那么系 ......
NULL指的是空值,或者非法值。
NVL (expr1, expr2)->expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致
NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型
NULLIF (expr1, expr2) ->相等返回NULL,不等返回ex ......
select * from (select t.*,rownum rn from (select * from emp) t where rownum<=10) where rn>=6;
创建分页结果集的游标
create or replace package fenyepackage as
type testcursor is ref cursor;
end fenyepackage;
创建分页存储过程
create or replace procedure fenye3(
tableName varchar2, --表名
......