您的位置:首页 > 其它

初次了解存储过程和存储函数和触发器的例子

2015-07-18 22:49 357 查看
--传参的存储过程
create or replace procedure addSalTo2(eno in number, num in number)

as

begin

update emp set sal = sal + num where empno = eno;

dbms_output.put_line(eno || '涨了' || num || '工资');

end;

begin
addsalTo2(7499, 400);
end;

--返回值的存储过程
create or replace procedure queryEmpNameSal(eno in number, pname out varchar2, psal out number) as
vsal emp.sal %type;
begin
select ename, sal into pname, psal from emp where empno = eno;

end;

--返回值的存储函数
create or replace function queryEmpNameSal2(eno in number, pname out varchar2, psal out number)

return varchar2

as
vsal emp.sal %type;
begin
select ename, sal into pname, psal from emp where empno = eno; return pname;
end;

--一般只有一个返回值的优先使用存储函数,其他都用存储过程

--触发器(非工作时间) 语句级别,,
create or replace trigger mytigger

before insert

on emp

declare
--变量

begin

if not(to_number(to_char(sysdate, 'hh24')) between 9 and 17) then

raise_application_error(-20004, '现在是非工作时间,不能插入数据!');

end if;

end;

--行级别的触发器
create or replace trigger checkSal

before update

on emp

for each row

declare

begin
if :new.sal <= :old.sal then raise_application_error(-20000, '涨工资不能越长越少!');
end if;
end;

--闪回
show recyclebin --查看回收站
flashback table tableName to before drop;--恢复删除的表

select * from emp;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: