首页 > 其他分享 >【MybatisPuls】如何调用DM存储过程并返回多结果集

【MybatisPuls】如何调用DM存储过程并返回多结果集

时间:2024-02-04 15:55:31浏览次数:30  
标签:存储 DM -- result1 CURSOR 调用 MybatisPuls parameterMap

一、创建DM存储过程

CREATE OR REPLACE PROCEDURE your_procedure
(
result1 OUT CURSOR,
result2 OUT CURSOR
)
AS
BEGIN
-- 打开第一个结果集
OPEN result1 FOR SELECT top 10 * FROM 表;

-- 打开第二个结果集
OPEN result2 FOR SELECT top 10 * FROM 表;
END;

--SQL测试存储过程

sql 调用过程 输出
declare
row1 表%ROWTYPE;
row2 表%ROWTYPE;
result1 CURSOR ;
result2 CURSOR ;
BEGIN
-- 调用存储过程,并接收输出参数
your_procedure( result1, result2);
-- 循环输出结果集1的数据
LOOP
FETCH result1 INTO row1;
EXIT WHEN result1%NOTFOUND; -- 当结果集为空时退出循环
-- 输出数据
DBMS_OUTPUT.enable;

DBMS_OUTPUT.PUT_LINE(row1.name);
END LOOP;

CLOSE result1;
end;

 

二、Mybatis Puls 调用

server层:只能使用map传参,接参

 Map<String, Object> parameterMap = new HashMap<>();
       parameterMap.put("outParam1", null); // 对应第一个结果集
       parameterMap.put("outParam2", null); // 对应第二个结果集
       baseMapper.getMultipleResults(parameterMap);
       Object map1=parameterMap.get("outParam1");
       Object map2=parameterMap.get("outParam2");

mapper层:
void getMultipleResults(Map<String,Object> p);

XML实现

  <select id="getMultipleResults" statementType="CALLABLE" resultSets="result1,result2">
       {CALL your_procedure(#{outParam1, mode=OUT, jdbcType=CURSOR, javaType=java.sql.ResultSet, resultMap=employeeResultMap},
   #{outParam2, mode=OUT, jdbcType=CURSOR, javaType=java.sql.ResultSet, resultMap=departmentResultMap})}
   </select>


注意:
--statementType="CALLABLE" --调用存储过程,存储函数
--resultSets:指定用于加载复杂类型的结果集名字
--jdbcType=CURSOR   游标类型,
--javaType=java.sql.ResultSet  一般设置

这里的 javaType 属性是可选的,如果留空并且 jdbcType 是 CURSOR,它会被自动地被设为 ResultMap

 

标签:存储,DM,--,result1,CURSOR,调用,MybatisPuls,parameterMap
From: https://www.cnblogs.com/WuUranus/p/18006398

相关文章

  • 【DM】
    一、场景将指定的数据格式转换为XML,并查询为列表数据格式:{"JiJClass":"1","Power":"1","DetailPara":"1","ChangeRptSrc":"1","SpreadCertRptSrc":"1"}二、示例--创建测试表CREATETABLEtes......
  • 【DM】修改集合(嵌套表类型)中数据
    declaretyperecord_tableisrecord(idint,valvarchar(128),namevarchar);typev_tableistableofrecord_table;tempChangev_table;begin--BULKCOLLECT批量的执行;selectnum,val,'zidingyi'bulkcollectintotempChangefromtable......
  • 【DM】-6521: 当前触发器不支持DDL语句
    问题:当代码块中有DDL(create,delete,alter)等操作时,报错“当前触发器不支持DDL语句”。这个问题是因为DDL_TV_TRIGGER参数值为0导致解决:需要在数据库目录下面的ini文件中增加DDL_TV_TRIGGER该参数解决;默认情况下,该参数值为0是关闭的;首先查询配置文件中参数名称包含DDL;(其实我在第一......
  • 【DM】根据指定字符分割字符串,返回表
    一、创建记录CREATEORREPLACETYPETYPE_ROW_SPLITSTRASOBJECT(idINT,valNVARCHAR(500));二、创建嵌套表CREATEORREPLACETYPETYPE_TABLE_SPLITSTRisTABLEOFTYPE_ROW_SPLITSTR;三、自定义函数CREATEORREPLACEFUNCTIONsplitTable(strvalINTEXT......
  • 【DM】自定义存储函数(返回字符在字符串中所在位置的下标字符串)
    一、使用while语法--输入:原字符串,查找的字符,分割字符--输出:所在位置下标集合(用输入的分割字符分割)CREATEORREPLACEFUNCTIONdF_strPosition(strInputINVARCHAR(100),strFindinputINVARCHAR(2),strSplitINVARCHAR(2))RETURNVARCHAR(128)ASstrVal......
  • 【DM】判断两个逗号分隔的字符串参数是否存在交集
     CREATEORREPLACEFUNCTIONSIGN_INTERSECTION(V_TAG1VARCHAR2,V_TAG2VARCHAR2)RETURNINTEGERISBEGINIFV_TAG1ISNULLORV_TAG2ISNULLORV_TAG1=''ORV_TAG2=''THENRETURN1;ENDIF;--去掉前缀和尾随逗号V_TAG2......
  • EDM 营销 平台有哪些?3款系统大分析
    在当今数字营销的激烈竞争中,EDM(ElectronicDirectMail)营销平台成为了企业获取客户和推广产品的重要渠道之一。随着市场需求的不断增长,各种EDM营销平台如雨后春笋般涌现,企业在选择合适的平台时往往面临诸多挑战。本文将针对EDM营销平台进行深入分析,探讨其中的3款系统,帮助企业在众多......
  • ABP-VNext 用户权限管理系统实战03---动态api调用并传递token
    一、使用动态api的目的ABP可以自动创建C#API客户端代理来调用远程HTTP服务(RESTAPIS).通过这种方式,你不需要通过 HttpClient 或者其他低级的HTTP功能调用远程服务并获取数据.现在有两个服务:BackgroundJob服务要调用IdentityManagement服务,并在调用时传递token二、集成步骤1、......
  • 用VB6.0封装DLL组件并在EXCEL中调用
    使用程序:1、MicrosoftOfficeExcel20032、MicrosoftVisualBasic6.0 案例:在工作表的C1单元格得出A1单元格+B1单元格的值。设计的VBA代码:SubTest()  OnErrorResumeNext  Range("C1")=Cells(1,1)+Cells(1,2)EndSub  第一部分、使用VB6.0制作DL......
  • HDMI2.1之eARC简介-Dolby Atmos和DTS:X
    eARCeARC代表“enhancedAudioReturnChannel”(增强型音频返回通道),是一种用于音频传输的高级技术标准。它是HDMI(HighDefinitionMultimediaInterface,高清晰度多媒体接口)规范的一部分,旨在提供更高质量的音频传输和更多的功能。HDMI论坛提出HDMI2.1版时,一并新增的功能,其全名是E......