Oracle存储过程基本语法及基本示例demo

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示例

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年11月    »
123
45678910
11121314151617
18192021222324
252627282930
搜索
标签列表
网站分类
最新留言
    文章归档
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.闽ICP备11018667号-2