oracle创建自定义函数/存储过程的创建和调用(sqlplus调用&Mybatis调用)

您所在的位置:网站首页 sqlplus执行存储过程 oracle创建自定义函数/存储过程的创建和调用(sqlplus调用&Mybatis调用)

oracle创建自定义函数/存储过程的创建和调用(sqlplus调用&Mybatis调用)

#oracle创建自定义函数/存储过程的创建和调用(sqlplus调用&Mybatis调用)| 来源: 网络整理| 查看: 265

一 oracle创建有返回值的函数并调用函数 1 创建调用只有输入参数的函数 create or replace function fun_test_1(param1 in number,param2 in number) return number as begin if param1>param2 then return param1; else return param2; end if; end fun_test_1; -- 调用函数 select fun_test_1(66,33) from dual; 2 Mybatis中调用

创建有输入输出参数的函数

-- 创建带有输入输出参数的函数 create or replace function fun_test_2(param1 in number,param2 out number) return number as begin if param1>param2 then return param1; else return param2; end if; end fun_test_2;

这种函数我们一般不会在sqlplus中进行调用,个人认为调用的时候使用mybatis或者使用PLSQL等工具进行测试比较方便

{#{param2,mode=OUT,jdbcType=NUMBER} = call F_GET_ROLEIDS(#{param1,mode=IN,jdbcType=NUMBER})}

需要注意的是我们不需要创建返回值进行参数的接收,当我们传递的参数为map时,mybati会自动将我们的out类型参数封装到我们的parameterType的map集合中;

二 oracle存储过程的创建和调用 1 创建调用存储过程 -- 创建存储过程 create or replace procedure pro1(uname in varchar2,pwd in varchar2,num in number,mes out varchar2,code out varchar2) is begin insert into TEST_MR values (uname,pwd,num); end; -- 调用 declare code varchar2(4); mes varchar2(10); uname varchar2(10); pwd varchar2(10); begin pro1(uname => 'lk',pwd => '123',num => 2,mes => mes,code => code); DBMS_OUTPUT.PUT_LINE(mes); end; -- 删除存储过程 drop procedure PRO1;-- 创建存储过程 2 Mybatis调用参数过程

和调用自定义函数一样,不需要创建结果集Map来接收返回来的output参数,只要执行结束,output参数会自动封装到里面;

只不过,存储过程我们习惯将输出参数定义在()里面进行传参

{call pro1 ( #{uname,mode=IN,jdbcType=VARCHAR}, #{password,mode=IN,jdbcType=VARCHAR}, #{num,mode=IN,jdbcType=NUMBER}, #{mes,mode=OUT,jdbcType=VARCHAR}, #{code,mode=OUT,jdbcType=VARCHAR} )} 总结

本次主要记录在工作中遇到的问题和解决之后的总结

本次测试使用工具:

ORACLE数据库连接工具: DataGrip2020.1

笔记工具:Typora

时间"2020-11-08



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3