Oracle存储过程基本语法及基本示例demo
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;
SQL> exec proc_insert_emp
PL/SQL procedure successfully completed
SQL
3)利用存储过程插入一条记录,带参数
--存储过程proc_insert_emp,往表EMP中插入一条记录
CREATE OR REPLACE PROCEDURE proc_insert_emp_para(
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_para;
调用:
SQL> exec proc_insert_emp_para(4,500,600);
PL/SQL procedure successfully completed
SQL> select * from emp;
ID TAX INSURANCE
---------- ---------- ----------
3 100 500
4 500 600
SQL>
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;
调用:
SQL> exec proc_deduction(3,deduction );
begin proc_deduction(3,deduction ); end;
ORA-06550: 第 1 行, 第 24 列:
PLS-00201: 必须声明标识符 'DEDUCTION'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
正确调用:
set serveroutput on;
declare
deduction number;
begin
proc_deduction(3,deduction);
dbms_output.put_line('deduction is:'||deduction);
end;
**************
deduction is:600
********************
其他高级用法查看:
oracle pl/sql存储过程内外层游标cursor嵌套参数化demo示例