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

oracle存储过程

时间:2017-07-29 16:47:03      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:处理程序   多个   out   建立   div   处理   server   通过   others   

在 ORACLE SERVER上建立存储过程,可以被多个应用程序调用,可以向存储过程传递参数,也可以向存储过程传回参数 

创建存储过程语法 :
CREATE [OR REPLACE] PROCEDURE Procedure_name
[ (argment [ { IN | OUT | IN OUT } ] Type,
argment [ { IN | OUT | IN OUT } ] Type ]
{ IS | AS }
<类型.变量的说明>
BEGIN
<执行部分>
EXCEPTION
<可选的异常错误处理程序>
END;


例 :

 1 CREATE OR REPLACE PROCEDURE DelEmp
 2   (v_empno IN emp.empno%TYPE) 
 3 AS
 4   No_result EXCEPTION;
 5 BEGIN
 6   DELETE FROM emp WHERE empno=v_empno;
 7   IF SQL%NOTFOUND THEN
 8     RAISE no_result;
 9 END IF;
10   DBMS_OUTPUT.PUT_LINE(编码为||v_empno||的员工已被除名!);
11 EXCEPTION
12   WHEN no_result THEN 
13   DBMS_OUTPUT.PUT_LINE(你需要的数据不存在!);
14   WHEN OTHERS THEN
15   DBMS_OUTPUT.PUT_LINE(SQLCODE||---||SQLERRM);
16 END DelEmp;

 


调用存储过程
存储过程建立完成后,只要通过授权,用户就可以在SQLPLUS 、ORACLE开发工具或第三方开发工具中来调用运行。
ORACLE 使用EXECUTE 语句来实现对存储过程的调用:
EXEC[UTE] Procedure_name( parameter1, parameter2…)


例:

CREATE OR REPLACE PROCEDURE proc_demo
  (Dept_no NUMBER DEFAULT 10 , Sal_sum OUT NUMBER,
  Emp_count OUT NUMBER)
IS
BEGIN
  SELECT SUM(sal), COUNT(*) INTO sal_sum, emp_count 
  FROM emp WHERE deptno=dept_no;
EXCEPTION
  WHEN NO_DATA_FOUND THEN 
  DBMS_OUTPUT.PUT_LINE(你需要的数据不存在!);
  WHEN OTHERS THEN 
  DBMS_OUTPUT.PUT_LINE(SQLCODE||---||SQLERRM);
END proc_demo; 

 


调用方法:

DECLARE
  V_num NUMBER;
  V_sum NUMBER(8, 2);
BEGIN
  Proc_demo(30, v_sum, v_num);
  DBMS_OUTPUT.PUT_LINE(30号部门工资总和:||v_sum||,人数:||v_num);
  Proc_demo(sal_sum => v_sum, emp_count => v_num);
  DBMS_OUTPUT.PUT_LINE(10号部门工资总和:||v_sum||,人数:||v_num);
END;

 


删除过程
可以使用DROP语句删除过程:
DROP PROCEDURE proceduer_name;

 

 

 

oracle存储过程

标签:处理程序   多个   out   建立   div   处理   server   通过   others   

原文地址:http://www.cnblogs.com/-maji/p/7255923.html

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