Oracle总结2

来源:互联网 发布:为什么淘宝商品不见了 编辑:程序博客网 时间:2024/06/06 07:14

——使用复合数据类型

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  用于限制函数不能读取包变量  


原创粉丝点击