首页 > 数据库 >springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用oracle存储过程

springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用oracle存储过程

时间:2023-04-24 19:35:23浏览次数:43  
标签:存储 调用 procedureName 参数 oracle 动态 过程

由于在开发业务时,可能同时调用的存储过程不知道参数,但是参数从界面、或已经存储在数据库的获取,所以就不希望手动写存储过程的参数,通过简化的调用。

能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。

灵活性:动态调用存储过程可以根据不同的参数来执行不同的逻辑,更加灵活。

提高代码重用性:存储过程可以在多个应用程序中重复使用,减少代码编写的工作量和维护成本。

简化维护:如果业务逻辑有变更,只需要修改存储过程代码,就可以在所有调用该存储过程的应用程序中生效,减少了维护成本和风险。

 完整DEMO下载地址: 让最方便调用存储过程

 

      /**
      * 以下是部分代码 * 传递指令代码和运行动作的序号,以及传递前台参数 * @param params * @return */ @PostMapping("/runProcedure") @ResponseBody String runProcedure(@RequestParam Map<String, Object> params){ JSONObject json=new JSONObject(); Map<String, Object> parameters = new HashMap<String, Object> (); String procedureName="P_CHECK_MATERIAL168"; //设置存储过程名称 procedureName=params.get("name").toString(); //动态获取存储过程名称 parameters.put("parameterName",procedureName); List<Map<String,Object>> Procedurelist=mobileService.getProcedureParameter(parameters); String sql="{call "+procedureName+"(" +getProcedureParameter(Procedurelist)+")}"; Map<String, Object> sqlParams= new HashMap<String, Object> (); //sqlParams 必须要动态设置存储过程需要的参数及值内容,可能动态传递过来、取存储在数据库中的信息等,否则不能运行 Map<String, Object> runParams=getProcedureMap(Procedurelist,sqlParams); runParams.put("sql",sql); mobileService.autoProcedure(runParams);//自动带有返回的out值内容 json.put("result","OK"); return json.toJSONString(); }

  

标签:存储,调用,procedureName,参数,oracle,动态,过程
From: https://www.cnblogs.com/weijia3624/p/17350595.html

相关文章

  • 【Oracle】year must be between -4713 and +9999,and not be 0
    【Oracle】yearmustbebetween-4713and+9999,andnotbe0yearmustbebetween-4713and+9999,andnotbe0出现问题的时候一般是to_date的地方有问题,很有可能是有字符串或者空格在数据中过滤掉就行......
  • 存储过程
    存储过程,类似于类,但又不太一样他是把一个或者一组SQL语句只进行一次编译,后储存在服务器的数据库里,之后就可以直接通过调用名字了,执行特定的功能;1、减少了编译SQL的时间,提高了效率和2、代码的复用性和可移植性3、减轻服务器的负担4、可以更有效的管理数据库权限缺点:专门维护他,占......
  • 如何在win10环境下安装Oracle 11g
    如在win10环境下安装Oracle11g时,在安装点击setup.exe之后,出现了:[INS-13001]环境不满足最低要求原因:版本注册的问题,默认Oracle11没有添加win10的注册信息,所以要将win10的注册信息添加到Oracle的配置文件里解决方法:1.首先找到你解压后的文件,点击打开database->stage->cvu->......
  • 第四章 存储器管理 4.3 连续分配存储管理方式
    一、单一连续分配  内存分为两个区域:系统区,用户区。  应用程序装入到用户区,可使用用户区全部空间。内存中仅驻留一道用户程序,整个用户区为一个用户独占。二、固定分区分配  1.将内存用户空间划分为若干个固定大小的区域,每个区域称为一个分区,在每个分区中只装入......
  • SpringSecurity从入门到精通:用户密码加密存储&铺垫只是jwt工具类使用
    用户密码加密存储    铺垫只是jwt工具类使用 ......
  • 实现语音接口的调用
    科技讯飞开放平台需要要获取id等3个参数,请到迅飞开放平台:https://www.xfyun.cn/services/voicedictation进行语音接口的调用,我在网上找到了别人的讯飞id接口,自己的还是没有实现成功。放一部分的代码实现一下吧。<%--CreatedbyIntelliJIDEA.User:DELLDate:2023/4......
  • 2023年4月24日-远程调用时通时不通
    问题:外部服务在调用我们服务的时候,偶发报超时。解决思路:首先跟日志,发现偶尔会出线连接超时。代码问题直接排除掉,怀疑是双方服务器问题。确认双方服务器问题。经排查,是我们服务器导致,我们服务器有两个实例,其中一个服务器好用,另外有一个服务器不好用。联系网络部门,问题解决。......
  • oracle 等待事件SQL*Net message to client
    TroubleshootingWaitsfor'SQL*Netmessagetoclient'and'SQL*Netmoredatatoclient'EventsfromaPerformancePerspective(DocID1404526.1)什么是“SQL*Netmessagetoclient”和“SQL*Netmoredatatoclient”事件?等待'SQL*Netmessage......
  • oracle 建立触发器实现登录失败的时候记录日志信息
    问题:用户反映oracle用户最近总是会被锁定,解锁后过一天继续被锁定。解决思路:v$session并不会记录ip信息,建立触发器实现登录失败的时候记录日志信息   CREATEORREPLACETRIGGERlogon_denied_to_alertAFTERservererrorONDATABASEDECLAREmessageVARCHAR2(168)......
  • Typecho<=1.2.0 存储型XSS 复现
    Typecho<=1.2.0存储型XSS影响版本漏洞影响版本:Typecho<=1.2.0漏洞复现cookie.js//定义一个全局变量website,值为一个具体的网址varwebsite="http://xss.xxxx.com";//声明并立即执行一个匿名函数(function(){//创建Image对象,并给它的src属性赋值为websi......