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

     打开plsql,在packages文件夹里新建存储过程

    在sql窗口中运行如下语句

    create or replace package SY_USER_PKG1 is

    TYPE MYCURSOR IS REF CURSOR;

    --自己写的测试存储过程
    PROCEDURE T_CHCODE1
    (
    v_phone IN VARCHAR2,
    v_userType IN NUMBER,
    v_type IN NUMBER,
    v_err_code OUT NUMBER
    );
    end SY_USER_PKG1;

    则会在packages文件夹下出现这个存储过程标记,就相当于java中的一个接口吧!

    然后:再写具体的存储过程,就相当于java中的接口实现类吧

    create or replace package body SY_USER_PKG1 is


    PROCEDURE T_CHCODE1
    (
    v_phone IN VARCHAR2,
    v_userType IN NUMBER,
    v_type IN NUMBER,
    v_err_code OUT NUMBER
    )
    IS
    v_userCount NUMBER;
    BEGIN

    IF v_type=1 THEN
    SELECT COUNT(1) INTO v_userCount FROM t_user_register_info A WHERE A.ACCOUNT=v_phone and a.user_type_id=v_userType;
    IF v_userCount=1 THEN
    v_err_code:=1;
    else
    v_err_code:=0;
    END IF;
    end if;

    IF v_type=2 THEN
    SELECT COUNT(1) INTO v_userCount FROM t_user_register_info A WHERE A.ACCOUNT=v_phone and a.user_type_id=v_userType;
    IF v_userCount=0 THEN
    v_err_code:=2;
    else
    v_err_code:=0;
    END IF;
    END IF;


    end T_CHCODE1;
    end SY_USER_PKG1;

    这段代码按F8运行后,在packages bodyies文件夹下会出现这个

    这就是一个完整的存储过程了,有接口,有实现

    下面让我们来测试一下

    点击右键,会有测试选项

    填入参数,如上图,F8运行,结果如下图

     

    可以看到拿到了返回的结果值 0

    然后就可以在java代码中调用了,在mapper配置文件中是这样的:

    <insert id="chcode" parameterType="java.util.Map" statementType="CALLABLE">
    <![CDATA[
    {call SY_USER_PKG1.T_CHCODE1(

    #{v_phone,mode=IN,jdbcType=NVARCHAR},
    #{v_userType,mode=IN,jdbcType=NUMERIC},
    #{v_type,mode=IN,jdbcType=NUMERIC},
    #{v_err_code,mode=OUT,jdbcType=NUMERIC}
    )
    }

    ]]>


    </insert>

    在service实现类中直接调用

     oCode就是拿到的返回值了。

    至此,一个调用存储过程的流程结束了!

  • 相关阅读:
    每天备份数据库中的表
    IE9相容問題-childNodes行為改變
    查找含有某字符的存儲過程
    弹出SQL报表的时候,出现空白的解决方法
    转:Page.ClientScript.RegisterStartupScript(me.GetType(),"script1","<script>alert('111');</script>")
    java核心技术记录之java术语
    Head First 设计模式笔记:单例模式
    多对一关系实体中,多的一方所关联的一实体的实例化问题
    ajax请求返回json数据弹出下载框的解决方法
    java核心技术记录
  • 原文地址:https://www.cnblogs.com/zhaoblog/p/5756379.html
Copyright © 2011-2022 走看看