子程序:
存储过程:
有名称的PLSQL块,称之为存储过程
语法:
create or replace procedure p_emp_findsal 过程名(p_type
in/out/in out p_name)
as
begin
exception
end end p_emp_findsal;
如何使用存储过程
1.创建存储过程
2.测试存储过程
测试:
create or replace procedure p_emp_find(p_empno NUMBER)
IS
v_sal NUMBER(8,2);
begin
SELECT sal INTO v_sal FROM emp WHERE empno=p_empno;
dbms_output.put_line(v_sal);
end p_emp_find;
create or replace procedure p_emp_find(p_empno NUMBER)
IS
v_sal emp.empno%TYPE;
v_ename emp.ename%TYPE;-----------列类型
v_job emp.job%TYPE;
v_mgr emp.mgr%TYPE;
--select into 只能存储一条存储过程
--系统自定义三个预定义异常
begin
SELECT sal,ename,job,mgr INTO v_sal,v_ename,v_job,v_mgr FROM
emp WHERE empno=p_empno;
dbms_output.put_line(v_sal);
dbms_output.put_line(v_ename);
dbms_output.put_line(v_job);
dbms_output.put_line(v_mgr);
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('0000');
WHEN too_many_rows THEN
dbms_output.put_line('11111');
WHEN OTHERS THEN
dbms_output.put_line('11111111');
end p_emp_find;
函数:
CREATE OR REPLACE FUNCTION f_emp_total_sal(p_deptno IN
emp.deptno%TYPE)
RETURN NUMBER
AS
v_sum NUMBER(8,2);
BEGIN
SELECT SUM(sal) INTO v_sum FROM emp WHERE deptno=p_deptno;
-- dbms_output.put_line(v_sum);不要输出
RETURN v_sum;
END f_emp_total_sal;
存储过程和函数的区别
1.存储过程和函数的区别
存储过程没有返回值,而函数有返回值
存储过程和函数都是Oracle的对象
存储过程和函数因为被提前编译且存储在服务器,所以安全,执行速度快
存储过程和函数是一个完整的事物单元。要么全部执行,要么都不成功
触发器
作用:审计,数据完整性,安全
定义:是数据库的一个对象
分类:系统触发器【作用在oracle系统上,例如,开机触发,关机前触发
】
DML触发器【insert ,delete,update,作用在表上】
替代触发器【作用在仕途上】
语法:
create or replace trigger tr_emp_opater
-before-insert or delete or update on 表
as
declare
--定义局部变量
begin
--写业务[不允许写事务性语句,例如rollback,commit savepoint
end tr_emp_update;
闪回:select * from emp as of timestamp sysdate -5/1440
插入:select * from emp t insert into emp;
4.数据的备份和还原:
1.delete操作单未commit的数据操作
delete from emp;
rollback;
2.delete操作单已经commit的数据怎么恢复
insert into emp
select * from emp as of timestamp sysdate-d/1440;
commit
3.drop操作语句怎么恢复
flashback table table to before drop;
注意:这样删除的数据无法闪回
drop table emp purge
4.truncate 删除怎么恢复
exp(导出)
imp(导入)
总复习:
1.Oracle的安装和卸载
2.Oracle客户端服务端的网络配置
3.SQL基础语法
4.Oracle的对象
5.PLSQL的开发
6。Oracle的数据库设计【powerdesigner】
7.数据库备份和还原