打开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就是拿到的返回值了。

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

一个oracle存储过程的更多相关文章

  1. 记一个Oracle存储过程错误

    下面一个存储过程是创建一个job,在5秒后更新一个表: create or replace PROCEDURE P_TEST AS jobno number; BEGIN dbms_job.submi ...

  2. 测试第一个Oracle存储过程

    存储过程语句 //简单存储过程的例子 //每调用一次打印一次hello world create or replace procedure sayhelloworld as begin dbms_ou ...

  3. 写的一个ORACLE存储过程小练习

    CREATE OR REPLACE PROCEDURE PRO_1112(O_NOTE OUT NUMBER,O_RESULT OUT VARCHAR2)ASV_NO NUMBER(20);V_NOT ...

  4. 项目中oracle存储过程记录——经常使用语法备忘

    项目中oracle存储过程记录--经常使用语法备忘 项目中须要写一个oracle存储过程,需求是收集一个复杂查询的内容(涉及到多张表),然后把符合条件的记录插入到目标表中.当中原表之中的一个的日期字段 ...

  5. .NET Core中使用Dapper操作Oracle存储过程最佳实践

    为什么说是最佳实践呢?因为在实际开发中踩坑了,而且发现网上大多数文章给出的解决方法都不能很好地解决问题.尤其是在获取类型为OracleDbType.RefCursor,输出为:ParameterDir ...

  6. NET Core中使用Dapper操作Oracle存储过程

    .NET Core中使用Dapper操作Oracle存储过程最佳实践   为什么说是最佳实践呢?因为在实际开发中踩坑了,而且发现网上大多数文章给出的解决方法都不能很好地解决问题.尤其是在获取类型为Or ...

  7. JDBC调用oracle 存储过程

    1.创建一个oracle存储过程 p_empInfo2 并执行,使这段sql代码能编译存储到oracle数据库中. --输入员工号查询某个员工(7839)信息,将薪水作为返回值输出,给调用的程序使用 ...

  8. Oracle 存储过程调用返回游标的另一个存储过程。

    一个扩展存储过程调用另一个存储过程,示例: 被调用存储过程:最后会返回一个游标,游标返回一个值.调用这个存储过程的存储过程同样需要获取它. procedure SearchBill --根据到货单号查 ...

  9. oracle 存储过程

    来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...

随机推荐

  1. BZOJ3300: [USACO2011 Feb]Best Parenthesis

    3300: [USACO2011 Feb]Best Parenthesis Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 89  Solved: 42 ...

  2. android 利用反射机制获取drawable中所有的图片资源

    public List<Map<String,Object>> getGridData() { list=new ArrayList<Map<String,Obje ...

  3. class$1,class$2,class$innerclass中的$的含义

    class文件名中的$的含义如下:   $后面的类是$前面的类的内部类 内部类有以下两种情况: 1.普通的组合类形式,即在一个类内部定义一个普通的类  public class Outer { cla ...

  4. Codeforces Round #277.5 (Div. 2) --E. Hiking (01分数规划)

    http://codeforces.com/contest/489/problem/E E. Hiking time limit per test 1 second memory limit per ...

  5. LIS 最长单调子序列模板

    namespace LIS { template <class T> int lis(vector<T> v) { ; vector<T> d; ;i<v.s ...

  6. java泛型编程

    一般的类和方法都是针对特定数据类型的,当写一个对多种数据类型都适用的类和方法时就需要使用泛型编程,java的泛型编程类似于C++中的模板,即一种参数化类型的编程方法,具体地说就是将和数据类型相关的信息 ...

  7. (转)android之Fragment(官网资料翻译)

    Fragment要点 Fragment作为Activity界面的一部分组成出现 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用. ...

  8. wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...

  9. Python 线程池的原理和实现及subprocess模块

    最近由于项目需要一个与linux shell交互的多线程程序,需要用python实现,之前从没接触过python,这次匆匆忙忙的使用python,发现python确实语法非常简单,功能非常强大,因为自 ...

  10. ProtoBuf 的java使用

    碰巧用到Proto,算是笔记吧算是笔记吧, windows : 1,两个文件:proto.exe,  protobuf-java-2.4.1.jar 2,建立一个工程TestPb,在下面建立一个pro ...