存储过程基本语法
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;