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
相关文档:
SQLServer和Oracle的常用函数对比
1.绝对值
S:select abs(-1) value
O:select abs(-1) value from dual
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual
3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.001) valu ......
一 在Oracle中连接数据库
public class Test1 {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(
&nbs ......
【转】http://www.gbunix.com/htmldata/2004_06/2/5/article_53_1.html
oracle系统表查询【GBUnix】
数据字典dict总是属于Oracle用户sys的。
1、用户:
select username from dba_users;
改口令
alter user spgroup identified by spgtest;
2、表空间:
select * fro ......
限制索引是一些没有经验的开发人员经常犯的错误之一。在SQL中有很多陷阱会使一些索引无法使用。下面讨论一些常见的问题:
1 使用不等于操作符(<>、!=)
下面的查询即使在cust_rating列有一个索引,查询语句仍然执行一次全表扫描。
  ......
先构造一个表:
create table emp2(
id number(2),
name varchar(10),
currdate date,
action varchar2(1)
)
创建触发器:
create or replace trigger d_i_u_emp2
after insert or update or delete on mysort
begin
if inserting then
insert into emp2 values (12,'dog',sysdate,'i');
elsif deleting then ......