zoukankan      html  css  js  c++  java
  • oracle存储过程

    简介

    存储过程是一种命名的PL/SQL代码块,存储在Oracle数据库中,可以被用户调用。

    存储过程可以包含参数,一般没有返回值

    存储过程是事先编译好的代码,再次调用的时候不需要重新编译,因此程序的运行效率较高。

    存储过程的创建

    语法格式如下:

    create [or replace] procedure pro_name
    (参数列表)
    as
    局部变量声明
    begin
      程序语句序列
      exception
      异常处理
    end pro_name
    
    1. 参数列表

      • in 输入参数,使用 username in varchar,表示接受外部过程传递来的值。
      • out 输出参数,使用username out varchar,表示此参数将在过程中被复制,并传递到过程体外。
      • in out 表示具有输入参数特性,又有输出型特性
    2. 参数类型不能指定长度,只需要指定数据类型即可。

    3. 局部变量只在过程中有效

    e.g

    create or replace PROCEDURE p_insert_aa
    (username in varchar, age in number)
    IS
    idn number(30);
    BEGIN
    select aa_id.nextval into idn from dual;
    insert into aa(id,username, age, createman,createdate)
    values (idn, username, age, 'admin', sysdate);
    commit;
    end p_insert_aa;
    

    存储过程的调用和删除

    存储过程可以在 SQL Plus或PL/SQL块中调用。

    1. 在SQL Plus中调用
    exec pro_name(param1, param2,...); 
    execute pro_name(param1, param2,...); 
    

    sql plus安装

    1. 在PL/SQL块中调用

    不需要使用关键字exec,即可直接调用

    1. 存储过程的删除
    drop procedure pro_name;
    

    查询

    procedure M_SP_QUERYTODAYSUTTLE (WEIGHID_VAR in varchar2,DATASET_CUR_VAR out dataset_cur) as
       cur_var sys_refcursor;
         begin
           open cur_var for
             SELECT t.heatname, t.kettle_no, t.gross,
                    to_char(t.grosstime, 'mm-dd hh24:mi:ss') as grosstime, t.tare,
                    to_char(t.taretime, 'mm-dd hh24:mi:ss') as taretime, t.dross,
                    t.suttle,
                    to_char(t.suttletime, 'mm-dd hh24:mi:ss') as suttletime,
                    t.grossweighname,
                    to_number(substr(t.sequence_no,
                                      length(t.sequence_no) - 5 + 1,
                                      5)) as sequence_no, t.materialname,
                    t.sourcecode, t.sourcename, t.targetcode, t.targetname
               FROM MSR_IRON_V t
              WHERE (T.SUTTLE > 0)
                and (T.validflag = 1)
                and (t.grosstime >=
                    to_date(to_char(sysdate, 'yyyy-mm-dd'), 'yyyy-mm-dd'))
                and (t.grossweighid = weighid_var)
              ORDER BY suttletime desc;
           dataset_cur_var := cur_var;
         end;
    
  • 相关阅读:
    Android组件化框架设计与实践
    浅谈Android进阶之路
    Android APP 性能优化的一些思考
    有关 Hybrid 开发模式实践总结
    开发人员必备的技能——单元测试
    有关Android插件化思考
    人生的意义到底是什么?
    Asp.Net Core 3.1学习-读取、监听json配置文件(7)
    Asp.Net Core 3.1学习-依赖注入、服务生命周期(6)
    Asp.Net Core 3.1学习- 应用程序的启动过程(5)
  • 原文地址:https://www.cnblogs.com/zhuxiang1633/p/13933329.html
Copyright © 2011-2022 走看看