oracle存储过程

Posted 云上咖啡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle存储过程相关的知识,希望对你有一定的参考价值。

在 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存储过程的主要内容,如果未能解决你的问题,请参考以下文章

oracle中的存储过程,有啥作用,以及怎么在代码中使用?

oracle创建存储过程时,提示错误是:错误(5,18): PL/SQL: ORA-00947: 没有足够的值?代码如下:

oracle form怎么调用oracle存储过程

oracle数据库可否批量导出存储过程

oracle创建存储过程时,提示错误是:错误(5,18): PL/SQL: ORA-00947: 没有足够的值?代码如下:

oracle的存储过程