日期:2014-05-16 浏览次数:20573 次
存储过程、函数、触发器
存储过程
实质性特定任务的子程序
优点
1、模块化
2、可重用性
3、可维护性
4、安全性
创建语法
CREATE [OR REPLACE] PROCEDURE 过程名称
[(参数列表)]
{IS|AS}
[声明变量]
BEGIN
--执行语句
[EXCEPTION]
--异常处理语句
END [过程名称]
//===============================================
CREATE OR REPLACE PROCEDURE find_emp
(emp_no NUMBER)
AS
empname VARCHER2(20)
BEGIN
--执行语句
[EXCEPTION]
--异常处理语句
END find_emp ;
使用储存过程
EXECUTE 过程名称 (参数列表);
存成过程参数模式
IN 输入模式(模式)
OUT 输出模式
IN OUT 输入输出模式
1、IN是默认模式
2、OUT、IN OUT模式在返回到调用环境前赋值
3、在参数列表中不能给OUT、IN OUT赋值
存储过程的授权
执行权、调试权
只授权
GRANT EXECUTE ON 过程名 TO 用户名
授权并授权授权的权限
GRANT EXECUTE ON 过程名 TO 用户名 WITH GRANT OPTION
程序块的跟踪和调试
PL/SQL developor环境下
SHOW ERREORS 查看某个程序块是否有错误
语法SHOW ERREORS [程序块的类型,名称]
类型:FUNCTION | PROCEDURE | PACKEAGE | PACKAGE BODY | TRIGGER | VIEW | TYPE | TYPE BODY | DIMENSION | JAVA SOURCE |JAVA CLASS}
developor环境下的调试
调试窗口
FILE——NEW——TEST WINDOE
窗口页签
Test script 测试代码
DSMS OutPut 打印输出
statistics 统计表
窗口图表
第一个: 调试
第二个: 执行
第三四个: 单步调试
第五六个: 跳出
调试步骤
1、设置断点
2、写入测试代码
3、输入想显示的变量,查看值
4、按执行或逐步进入断点处
自主事务
自主事务是由另一个事务处理启动的独立的事务处理。
解决问题
在调用存储过程时,一个过程的更改对这两个
过程都可见,任何提交或回退都会影响这两个
标记为自主事务
在CREATE之中,写入编译指使PRACMA AUTONOMOUS_TRANSACTION;
函数
用于返回特定数据的PL/SQL程序块,必须有一个返回值
创建语法
CREATE [OR REPLACE] FUNCTION 函数名称
[(参数列表)]
RETURN datatype
IS|AS
BEGIN
语句块(必须含有RERTUN)
END;
//===================实例======================
CREATE OR REPLACE FUNCTION 函数名称
RERTUN VARCHAR2
IS
BEGIN
RETURN 'asd'
END;
调用语法
无参的:直接用函数名
有参数:函数名(参数列表)
与过程的区别
存储过程 函数
调用 作为PLSQL语句执行 作为表达是一部分
RETURN 不包含,有也不用于 必须包含
返回
程序包
是一种数据库对象,是对相关PL/SQL、子程序、游标、异常
变量、常量等的封装
构成
程序包规范 声明PL/SQL、子程序、游标、异常
变量、常量
程序包主体 实现规范中定义的PL/SQL、子程序、游标、异常
变量、常量
程序包规范
应用程序的接口
创建语法
CREATE [OR REPLACE] PACKAGE 包名
IS | AS
[声明公共类型、常量、变量、异常、游标等]
[声明PLSQL子程序]
END 包名;
//==================实例================
CREATE OR REPLACE PACKAGE 包名
IS
PROCEDURE emp_proc();
FUNCTION emp_fun () RETURN VARCHER2;
[声明PLSQL子程序]
END 包名;