美文网首页
开发日记:Orcale 存储过程(一)

开发日记:Orcale 存储过程(一)

作者: kangyiii | 来源:发表于2017-06-14 18:15 被阅读0次

    由于项目中用到存储过程,这两天把存储过程方面的知识简单回顾了一下并分享给大家。

    编写第一个存储过程
    create or replace procedure ky_proc_in_out(para3 in out varchar2) as
      v_name varchar2(20);
    begin
      v_name := 'kangyi';
      para3  := v_name;
      dbms_output.put_line('para3:' || para3);
    end;
    

    上述代码实现的功能是将传入参数设置为‘kangyi’,存储过程的定义大致分为三部分:

    //1.定义存储过程名及参数
    create or replace procedure ky_proc_in_out(para3 in out varchar2) as
    //2.设置成员变量
    begin
    //3.存储过程实现代码
    end;
    

    传入的形参中要添加两个类型,一个是输入输出类型,一个是具体的数据类型,这里简单介绍一下输入输出类型:
    IN:默认类型,只能作为传入参数,即在存储过程能不能对其进行赋值。
    OUT:只能作为传出参数,如果将它作为传入参数看待,它在存储过程中如果不赋值,总为null。
    IN OUT:可作为输入和输出参数。真正的引用传递参数,和平时JAVA中的形参差不多。

    项目中编写的第一个存储过程
    create or replace procedure proc_normalcount(p1 OUT varchar2) as
      --定义一个游标用于得到符合查询条件的总数
      cursor c_postype is
        select COUNT(NAME)
          from (select TAX_INFO_GD.NAME,
                       TAX_INFO.NSR,
                       TAX_INFO_GD.SH_ID,
                       TAX_INFO.SHXYDM,
                       TAX_INFO_GD.SYLX,
                       TAX_INFO_GD.JDXZ
                  FROM TAX_INFO_GD
                  LEFT JOIN TAX_INFO
                    ON TAX_INFO_GD.NAME = TAX_INFO.NSR
                   AND TAX_INFO_GD.SH_ID = TAX_INFO.SHXYDM)
         where NSR is null
           and SHXYDM is null
           AND (SYLX = 1 OR SYLX = 3);
    begin
    --打开游标 
     open c_postype;
    --取出总数赋值给输出参数p1
      fetch c_postype
        into p1;
    --关闭游标  
    close c_postype;
    end;
    

    上述存储过程主要解决的需求是查找出第二张表在第一张表中名称和ID都不存的数据条数

    相关文章

      网友评论

          本文标题:开发日记:Orcale 存储过程(一)

          本文链接:https://www.haomeiwen.com/subject/bncwfxtx.html