Oracle总结2

——使用复合数据类型

1.PL/SQL记录(Record)以及%ROWTYPE属性

declare
  type x is record(
  ename emp.ename%type,
  salary emp.sal%type,
  dno emp.deptno%type);
  xx x;
begin
  select ename,sal,deptno into xx from emp where empno=&no;
  dbms_output.put_line(xx.ename);
end;

--------rowtype 完全匹配表中的列
declare
  a dept%rowtype;
begin
  a.deptno:=11;
  a.dname:='UUUUUUU';
  a.loc:='BEIJING';
  insert into dept values (a.deptno,a.dname,a.loc);
end;

2.索引表(INDEX)、嵌套表、和变长数组(VARRAY)
--------索引表
type type_name is table of element_type
[not null] index by key_type;
identifier type_name;
--------嵌套表
type type_name is table of element_type;
identifier type_name;
--------变长数组
type type_name is varray(size_limit) of element_type[not null];
identifier type_name;
3.使用记录表可以有效的处理多行多列的数据
declare
  type x is table of emp%rowtype index by binary_integer;
  xx x;
begin
  select * into xx(2) from emp where empno=&no;
  dbms_output.put_line('雇员姓名:'||xx(2).ename);
  dbms_output.put_line('雇员工资:'||xx(2).sal);
end;
4.集合方法
  •  EXISTS
  • COUNT
  • LIMIT
  • FIRST/LAST
  • PRIOR/NEXT
  • EXTEND
  • TRIM
  • DELETE
5.批量绑定FORALL
  • INDICES OF
  • VALUE OF
  • BULK COLLECT

————使用游标

1.使用显示游标以及游标属性
declare
   cursor emp_cursor is select ename,sal from emp where deptno=10;
   v_ename emp.ename%type;
   v_sal emp.sal%type;
begin
   open emp_cursor;
   loop
     fetch emp_cursor into v_ename,v_sal;
     exit when emp_cursor%notfound;
     dbms_output.put_line(v_ename||':'||v_sal);
   end loop;
   close emp_cursor;
end;
  • %ISOPEN
  • %FOUND
  • %NOTFOUND
  • %ROWCOUNT

2.参数游标

        定义参数游标时,需要指定参数名及其数据类型

3.显示游标更新或删除数据

同过游标更新或删除数据,在定义游标时必须带有FOR UPDATE 

4.for循环

----FOR循环中直接使用子查询
begin
   for emp_record in
   (select ename,sal from emp)loop
   dbms_output.put_line(emp_record.ename);
   end loop;
end;

5.游标变量

必须首先定义REF CURSOR类型,才能定义游标变量。return 子句可以不定义

6.FETCH..BULK COLLECT INTO  语句和CURSOR表达式



————开发子程序

1.建立和调用过程

  • CREATE PROCEDURE   [IN  OUT IN OUT]
  • EXECUTE/CALL
位置传递  名称传递  组合传递

2.建立和调用函数

必须使用RETURN 子句。其他跟过程类似
3.管理PL/SQL子程序
  • USER_OBJECTS
  • USER_SOURCE
  • SHOW ERRORS

————开发包 

1.建立包规范和包体
关键字PACKAGE/  PACKAGE BODY

2.在包内定义公用组件和私有组件
  • 公用组件在包头定义私有的在包体定义 
  • 不同作用域可以重复赋值
  • 公有变量不能重复定义,私有在过程中可以重复定义
  • 包的内部可以定游标类型,但不能定义游标变量。可以定义静态游标
---当使用其他用户身份调用公用组件时,必须在组件名前加用户名和包名作为前缀
----SCOTT.EMP_PACKAGE.。。。。


----当调用远程数据库包的公用组件是,在组件名前加包名作为前缀在组件名后需要带有数据库链名作为后缀
----EMP_PACKAGE.ADD_EMPLOYEE@TENDER(1111,'SCOTT',1233,10)


3.使用重载

多个具有相同名称的子程序。以java中重载相似但是返回类型必须相同

4.建立构造过程

初始化包的全局变量

5.纯度级别

-----纯度级别  
---WNDS用于限制函数不能修改数据库数据  
--- WNPS 用于限制函数不能修改包变量  
--- RNDS 用于限制函数不能读取数据库数据  
--- RNPS  用于限制函数不能读取包变量  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值