北在北方

太白枝头看,花开不计年,杯中浮日月,楼外是青天。

导航

Oracle Procedure

Posted on 2012-08-16 16:11  CN.programmer.Luxh  阅读(552)  评论(0编辑  收藏  举报

存储过程基本语法

CREATE OR REPLACE PROCEDURE <procedure_name> [(<parameters>)] 
IS 
     [declare section] 
BEGIN
     [<statement(s)>]
[EXCEPTION <exception handler(s);]
END [<procedure_name>];

  <>表示必须有,[]表示可选。

简单的例子

1、直接往表里插入一条记录

  1)建立一个测试的表

--测试表 EMP
create table EMP
(
  ID        NUMBER,
  TAX       NUMBER,      --税收
  INSURANCE NUMBER       --保险
)

  2)利用存储过程插入一条记录,不带参数

--存储过程proc_insert_emp,往表EMP中插入一条记录
CREATE OR REPLACE PROCEDURE proc_insert_emp
IS
BEGIN
     insert into emp(id,tax,insurance) values(3,100,500);--向emp表插入一条记录
     commit;--提交事务
END proc_insert_emp;

  3)利用存储过程插入一条记录,带参数

--存储过程proc_insert_emp,往表EMP中插入一条记录
CREATE OR REPLACE PROCEDURE proc_insert_emp(
       id IN NUMBER,        --输入参数,接收ID值
       tax IN NUMBER,       --输入参数,接收税收的值
       insurance IN NUMBER  --输入参数,接收保险的值
)
IS
BEGIN
     insert into emp(id,tax,insurance) values(id,tax,insurance);--向emp表插入一条记录
     commit;--提交事务
END proc_insert_emp;

  调用:

exec proc_insert_emp(4,500,600);

  4)带输出参数

--存储过程proc_deduction,计算扣除税收和保险
CREATE OR REPLACE PROCEDURE proc_deduction(
       emp_id IN NUMBER,        --输入参数,接收ID值
       deduction OUT NUMBER     --输出参数
)
IS
BEGIN
       select tax + insurance into deduction
       from emp where id = emp_id;
END proc_deduction;
     

  调用:

set serveroutput on;
declare
    deduction number;
begin
    proc_deduction(2,deduction);
    dbms_output.put_line('deduction is:'||deduction);
end;