OCP认证考试指南(10):使用PL/SQL进行Oracle编程
来源:互联网 发布:天刀唐门男性捏脸数据 编辑:程序博客网 时间:2024/05/21 15:05
1、编程语言与Oracle数据库
1.1、存储的与匿名的PL/SQL程序块
与存储的PL/SQL程序块相比,匿名的PL/SQL程序块效率较低,此外由于可能在多台机器中公布源代码,还会引发管理问题。
1.2、PL/SQL对象
PL/SQL对象具有下列5种类型:
- 过程
- 函数
- 程序包
- 程序包主体
- 触发器
2、过程、函数以及程序包
2.1、过程与函数
过程(Procedure)是一个执行某些动作的代码块。要运行一个过程,既可以在PL/SQL程序块内部调用这个过程,也可以使用交互式的EXECUTE命令。
函数(Function)与过程的概念相似,但并不具有OUT型实参,并且无法使用EXECUTE命令来调用。函数应当通过RETURN返回一个值。
如果使用的是CREATE命令而不是CREATE OR REPLACE命令,那么在指定对象已存在的情况下必须先删除这个对象。
函数:
SQL> create or replace function odd_even(v1 number) 2 return varchar2 3 as 4 begin 5 if 6 mod(v1,2) = 0 7 then 8 return 'even'; 9 else 10 return 'odd'; 11 end if; 12 end odd_even; 13 / Function created. SQL> select odd_even(8) from dual; ODD_EVEN(8)-------------------------------------------------------------------even SQL> select odd_even(9) from dual; ODD_EVEN(9)-------------------------------------------------------------------odd
过程:
SQL> conn system/oracleConnected.SQL> create table integers ( 2 C1 number(2), 3 C2 varchar2(5)); Table created. SQL> create or replace procedure ins_ints(v1 in number) 2 as 3 begin 4 for i in 1..v1 loop 5 insert into integers values (i, odd_even(i)); 6 end loop; 7 end ins_ints; 8 / Procedure created. SQL> execute ins_ints(5); PL/SQL procedure successfully completed. SQL> select * from integers; C1 C2---------- ----- 1 odd 2 even 3 odd 4 even 5 odd
2.2、程序包
程序包(Package)由规范和主体两个对象组成。
使用CREATE PACKAGE命令可以创建一个程序包规范:
SQL> create or replace package numbers 2 as 3 function odd_even(v1 number) return varchar2; 4 procedure ins_ints(v1 in number); 5 end numbers; 6 / Package created.
使用CREATE PACKAGE BODY创建程序包主体:
SQL> create or replace package body numbers 2 as 3 function odd_even(v1 number) 4 return varchar2 5 as 6 begin 7 if 8 mod(v1,2)=0 9 then 10 return 'even'; 11 else 12 return 'odd'; 13 end if; 14 end odd_even; 15 procedure ins_ints(v1 in number) 16 as 17 begin 18 for i in 1..v1 loop 19 insert into integers values (i, odd_even(i)); 20 end loop; 21 end ins_ints; 22 end; 23 / Package body created.
查看:
SQL> desc numbers;PROCEDURE INS_INTS Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- V1 NUMBER INFUNCTION ODD_EVEN RETURNS VARCHAR2 Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- V1 NUMBER IN
使用:
SQL> execute numbers.ins_ints(5); PL/SQL procedure successfully completed. SQL> select * from integers; C1 C2---------- ----- 1 odd 2 even 3 odd 4 even 5 odd 1 odd 2 even 3 odd 4 even 5 odd 10 rows selected.
3、数据库触发器
常见的触发事件:
- INSERT、UPDATE以及DELETE这些DML命令的执行
- CREATE、DROP、ALTER以及TRUNCATE这些DDL命令的执行
- 会话登入与登出
- 数据库的启动与关闭
- 由于空间问题导致的某条语句的挂起
- 检测到服务器错误
只能通过触发事件来运行触发器。
SQL> create or replace trigger oe_check 2 after insert or update on integers 3 for each row 4 begin 5 if mod(:new.C1, 2) = 0 then 6 dbms_output.put_line(:new.C1 || ' is even '); 7 else 8 dbms_output.put_line(:new.C1 || ' is odd '); 9 end if; 10 end; 11 / Trigger created. SQL> set serveroutput on;SQL> insert into integers values (2, 'odd');2 is even 1 row created. SQL> rollback; Rollback complete. SQL> insert into integers values (3, 'odd');3 is odd 1 row created. SQL> commit; Commit complete.
4、用于PL/SQL的实例参数
PLSQL_V2_COMPATIBILITY(默认FALSE):为TRUE许可旧版本中合法的异常行为。
PLSQL_DEBUG(默认FALSE):为TRUE会以某种方式编译PL/SQL代码,有助于调试其他信息。
PLSQL_OPTIMIZE_LEVEL(默认为2):最高级别为2,支持使用编译器的所有优化功能,提供最佳运行时性能,但可能增加编译时间。低级别提供更快编译,但稍微影响执行性能。大量编译时,可修改。
PLSQL_WARNING(默认DISABLE:ALL):控制PL/SQL编译器应当显示的消息。
PLSQL_CODE_TYPE(默认INTERPRETED):默认PL/SQL代码只被编译为字节代码,在调用时被解释。如设置为NATIVE,与后面的PLSQL_NATIVE_LIBRARY_DIR参数一起用,PL/SQL代码预编译为C代码,这种方式可以改善性能。
PLSQL_NATIVE_LIBRARY_DIR(默认NULL):指定存储本地PL/SQL编译所生成的动态链接库的操作系统路径。
以上参数多数情况下都适用默认设置。
- OCP认证考试指南(10):使用PL/SQL进行Oracle编程
- OCP认证考试指南(2):安装Oracle Database 10G
- 【OCP认证考试指南】oracle 10G 安装
- OCP认证考试指南(15):监视Oracle
- Oracle之SQL联接(认证考试指南)
- OCP认证考试指南(3):创建Oracle数据库(1)
- OCP认证考试指南(3):创建Oracle数据库(2)
- OCP认证考试指南(3):创建Oracle数据库(3)
- OCP认证考试指南(1):Oracle的基本概念
- OCP认证考试指南(4):接合Oracle数据库
- OCP认证考试指南(5):管理Oracle进程
- OCP认证考试指南(6):管理Oracle存储结构
- OCP认证考试指南(12):配置Oracle互联
- OCP认证考试指南(19):备份Oracle数据库
- OCP认证考试指南(20):恢复Oracle数据库
- OCP认证考试指南(16):管理撤销
- OCP认证考试指南(17):处理锁定
- ocp认证考试指南第一章
- WMS中添加默认发布点
- jquery对select操作
- SQL Server 2005 企业版没有 Management Studio管理工具的解决办法[转载部分]
- java 内部类总结
- Android 下控件位置大小调整
- OCP认证考试指南(10):使用PL/SQL进行Oracle编程
- 通用对话框相关
- C/C++ 学习笔记[02].替换Tab为空格,并在TabStop的位置停止
- ubuntu10.04打印机配置
- J2ME中主类的构造方法必须用public修饰
- 天气预报抓取
- 15 个 JavaScript Web UI 库
- ibatis动态字段配置
- 【转】动画效果-蹦蹦跳跳的进入界面