码迷,mamicode.com
首页 > 数据库 > 详细

PL/SQL&存储过程||存储函数&触发器

时间:2015-05-13 00:30:24      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:

plsql 有点:交互式  非过程化   数据操纵能力强   自动导航语句简单   调试简单   想率高 声明类型的方式 1.基本类型 2.引用变量 3.记录型变量 基本格式 declare 声明 begin exception end 判断语句 if:。。then。。。 else end if;

循环 loop 退出条件   exit when 。。。;

end loop;

光标 cursor ---resltSet 返回多行数据

格式 cursor 表明 oper 打开 fetch 去一行光标 close 关闭

oracle 异常处理 exception

timeout_on_resourrce 请求超时   储存过程 储存函数 触发器 基于plsql

储存过程 格式 create (or replace)procedure   as

储存过程 储存函数\ 区别:储存函数 必须有返回值 只能接受一个参数 二储存过程 可有可无返回值  可有可无参数  并能接受多个参数   与返回值可以是集合

可以使用光标  java调用储存过程

1:创建数据库链接connectio 2.预编译sql对象  可以创建一个结果集 3.(使用光标) 结果集对象

sql: String sql = "{call MYPACKAGE.queryEmpList(?,?)}";调用储存过程 是用光标 call.registerOutParameter(2, OracleTypes.CURSOR); 光标类型

数据字典 元数据    数据库框架

 触发器:行级触发器,语句级触发器

实例:

/*
实施复杂的安全性检查
禁止在非工作时间插入新员工

非工作时间:
1. 周末: to_char(sysdate,‘day‘) in (‘星期六‘,‘星期日‘)
2. 上班前 下班后:to_number(to_char(sysdate,‘hh24‘)) not betweeen 9 and 18
*/
create or replace trigger securityemp
before insert
on emp
begin
   if to_char(sysdate,day) in (星期六,星期日) or
      to_number(to_char(sysdate,hh24)) not between 9 and 18 then
         --抛出错误
         raise_application_error(-20001,禁止在非工作时间插入新员工);
   end if;
end;
/
--涨后的工资不能少于涨前的工资

create or replace trigger checksal
before update
on emp
for each row
begin

  --if 涨后的薪水 <  涨前的薪水 then 
  if :new.sal < :old.sal then
    raise_application_error(-20002,涨后的工资不能少于涨前的工资.涨后:||:new.sal||   涨前:||:old.sal);
  end if;

end;
/

 

PL/SQL&存储过程||存储函数&触发器

标签:

原文地址:http://www.cnblogs.com/lulu638/p/4498849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!