zoukankan      html  css  js  c++  java
  • Orcale 存储过程实践总结

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

    编写第一个存储过程
    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中的形参差不多。

    项目中编写的第一个存储过程

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

    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;
    
  • 相关阅读:
    微信小程序-物流api
    flutter第一课
    git新手配置(ios环境)
    git新手配置(windows环境)
    .Net Core WebApi(三)——操作Oracle数据库
    .Net Core WebApi(二)——添加Nlog
    .Net Core WebApi(一)——添加Swagger
    SQL server、Oracle中拿到新增列时的自增字段值
    Sql Server中如何删除字段的自增标识
    Sql Server中删除一个字段的默认值
  • 原文地址:https://www.cnblogs.com/yzssoft/p/7010311.html
Copyright © 2011-2022 走看看