zoukankan      html  css  js  c++  java
  • Oracle Procedure

    存储过程基本语法

    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;
  • 相关阅读:
    bzoj3237 cdq分治+可撤销并查集
    bzoj2957 奥妙重重的线段树
    bzoj3718 树状数组
    bzoj3991 LCA + set
    codeforces794D dfs+图上hash
    [ZJOI2010]数字计数/烦人的数学作业
    [SCOI2009]windy数
    数位DP(学习笔记)
    UVA10559 方块消除 Blocks
    采蘑菇
  • 原文地址:https://www.cnblogs.com/luxh/p/2640411.html
Copyright © 2011-2022 走看看