zoukankan      html  css  js  c++  java
  • oracle pl/sql之oracle存储过程

          存储过程是一种命名pl/sql程序块,它可以被赋予参数,存储在数据库中,可以被用户调用。由于存储过程是已编译好的代码,所以在调用的时候不必再次进行编译,从而提高了程序的运行效率。另外使用存储过程可以实现程序的模块化设计

    存储过程的语法:

    create [or replace] procedure procedure_name (parameter [{in| out}]  data_type,

    parameter [{in| out}]  data_type....)  

    {is|as}

     begin

    executable section;

    exception

    exception handlers;

    end;

    程序演示:

         写一个存储过程用来向emp表中插入一条数据

    create of replace procedure my_procedure3 is
    begin
    insert into emp(empno,ename) values(9527,'星爷之唐伯虎');
    end;

    控制台中调用存储过程:

     exec 过程名(参数);

    或者写一个plsql语句块

    begin

    过程名(参数);

    end;

    参数:

    oracle 有三种参数模式in out和 in out
     
    in 表示用户的输入参数
     
    程序演示:
     

    create or replace procedure my_procedure(in_no in number,in_name in varchar2) is
    begin
    insert into emp(empno,ename) values(in_no,in_name);
    end;

    out参数表示用户的输出

    程序演示:

    create or replace procedure my_pro(in_no in number,out_name out varchar2,out_sal out number) is
    begin
    select ename,sal into out_name,out_sal from emp where empno=in_no;
    end;

    在sqlplus中想得到带有输出的过程执行完后的值
     
    方法1:写匿名块
     


    declare
    v_name emp.ename%type;
    v_sal emp.sal%type;
    begin
    my_pro(7369,v_name,v_sal);
    dbms_output.put_line( v_name);
    dbms_output.put_line( v_sal);
    end;

     注意:

    in out同时具有in和out的特性,在过程中可以读取和写入类型参数
  • 相关阅读:
    bzoj1626[Usaco2007 Dec]Building Roads 修建道路*
    bzoj1610[Usaco2008 Feb]Line连线游戏*
    bzoj1666[Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏*
    bzoj1679[Usaco2005 Jan]Moo Volume 牛的呼声*
    bzoj1606[Usaco2008 Dec]Hay For Sale 购买干草*
    bzoj1264[AHOI2006]基因匹配Match
    bzoj4518[Sdoi2016]征途
    bzoj2049[Sdoi2008]Cave 洞穴勘测
    bzoj4514[Sdoi2016]数字配对
    bzoj2429[HAOI2006]聪明的猴子
  • 原文地址:https://www.cnblogs.com/ztyy04126/p/4901203.html
Copyright © 2011-2022 走看看