Sybase·调用存储过程并返回结果
最近项目要用Sybase数据库实现分页,第一次使用Sybase数据库,也是第一次使用他的存储过程。2个多小时才调用成功,在此记录:
项目架构:SSM
1、Sybase本身不支持分页操作,需要写存储过程来调用,这是很坑的。存储过程的内容暂且放下,
存储过程名:query_xxx_record_detail
输入输出参数如下:9个输入,5个输出
--input
@terminal_no varchar(16),
@account_no varchar(16),
@begin_time char(14),
@end_time char(14),
@query_type varchar(1), ---0:query all 1:paging
@count_per_page Integer = 10,
@start_page_num Integer = 1,
@page_count Integer = 1,
@timestamp char(19),
--output
@total_pages integer output,
@total_records varchar(8) output,
@total_amount varchar(14) output,
@return_code char(4) output,
@error_msg varchar(255) output
as
2、在业务层整理参数:
注意:在使用map携带参数时,只需要传入input参数。。9个
Map<String,Object> queryMap = new HashMap<String, Object>();
//调用存储过程:
queryMap.put("terminal_no",terminalNo);
queryMap.put("account_no", accountNo);
queryMap.put("begin_time", beginTime);
queryMap.put("end_time", endTime);
queryMap.put("query_type", type);
queryMap.put("count_per_page", pageRecordCountNo);
queryMap.put("start_page_num", beginPageNo);
queryMap.put("page_count",pageCountNo);
//使用list得到返回值,是存储过程中的sql决定的。这个跟其他的select一样可以封装 List<MposRecord> queryResult = mapper.queryPospMposRecordDetail(queryMap);
3、在mapper中方法:
/**
* 调用存储过程返回分页结果
* @param queryMap
* @return
*/
List<MposRecord> queryPospMposRecordDetail(Map<String, Object> queryMap);
4、在xml文件中:
<select id="queryPospMposRecordDetail" statementType="CALLABLE" parameterMap="queryDetailMap" resultType="java.util.Map">
<![CDATA[{call query_xxx_record_detail (?,?,?,?,?,?,?,?,?, ?,?,?,?)}]]>
</select> <parameterMap type="java.util.Map" id="queryDetailMap">
<parameter property="terminal_no" mode="IN" jdbcType="VARCHAR"/>
<parameter property="account_no" mode="IN" jdbcType="VARCHAR"/>
<parameter property="begin_time" mode="IN" jdbcType="CHAR"/>
<parameter property="end_time" mode="IN" jdbcType="CHAR"/>
<parameter property="query_type" mode="IN" jdbcType="VARCHAR"/>
<parameter property="count_per_page" mode="IN" jdbcType="INTEGER"/>
<parameter property="start_page_num" mode="IN" jdbcType="INTEGER"/>
<parameter property="page_count" mode="IN" jdbcType="INTEGER"/> <parameter property="total_pages" mode="OUT" jdbcType="INTEGER"/>
<parameter property="total_records" mode="OUT" jdbcType="VARCHAR"/>
<parameter property="total_amount" mode="OUT" jdbcType="VARCHAR"/>
<parameter property="return_code" mode="OUT" jdbcType="CHAR"/>
<parameter property="error_msg" mode="OUT" jdbcType="VARCHAR"/>
</parameterMap> <parameter property="total_pages" mode="OUT" jdbcType="INTEGER"/>
<parameter property="total_records" mode="OUT" jdbcType="VARCHAR"/>
<parameter property="total_amount" mode="OUT" jdbcType="VARCHAR"/>
<parameter property="return_code" mode="OUT" jdbcType="CHAR"/>
<parameter property="error_msg" mode="OUT" jdbcType="VARCHAR"/>
</parameterMap>
注意:
1.statementType="CALLABLE"
2.占位符:9个传入参数,5个返回参数都需要占位符
3.参数列表:传入参数和返回参数:用mode属性分开。
总结:调用存储过程基本没啥区别,包括返回值跟其他select语句也基本一致,可以返回用来封装的bean或者list,可以返回string或者map。这是在写xml文件的时候要注意有些不一样的。
主要还是最后的xml文件写法,跟一般的数据库sql语句很像
Sybase·调用存储过程并返回结果的更多相关文章
- EF 6 调用存储过程时返回多结果集和OUTPUT参数问题
原文地址:http://q.cnblogs.com/q/56836/ 各位大侠,提问一个关于EF6调用存储过程时返回多结果集和OUTPUT参数问题 目前已经可以调用存储过程并且可以返回多个结果集. 但 ...
- spring jdbctemplate调用存储过程,返回list对象
注:本文来源于< spring jdbctemplate调用存储过程,返回list对象 > spring jdbctemplate调用存储过程,返回list对象 方法: /** * 调用 ...
- Spring data jpa 调用存储过程处理返回参数及结果集
一.环境 1.此随笔内容基于spring boot整合的spring data jpa项目, 2.数据库为mysql 5.7.9版本 二.内容 1. 新建存储过程 pro_query_object B ...
- Asp.Net中调用存储过程并返回输出参数
/// <summary> /// 调用存储过程返回参数 /// </summary> /// <param name="orderId">&l ...
- ibatis调用存储过程(无返回参数)
ibatis调用存储过程例子: java: getSqlMapClientTemplate().insert(sql, paraMap) ibatis xml: <parameterMap id ...
- python调用存储过程失败返回1787错误
(1787, 'When @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1, the statements CREATE TEMPORARY TABLE and DROP T ...
- 关于Set Nocount ON的性能 |c#调用存储过程的返回值总是-1
原文地址:http://www.tuicool.com/articles/qe6BZbR 也许因为它太过于简单,自己一直没能好好关注这个语句,只记得"只是"提高点性能而已.有时会在存储过程中写上几句, ...
- EF6调用存储过程,返回多个结果集处理
链接:http://www.codeproject.com/Articles/675933/Returning-Multiple-Result-Sets-from-an-Entity-Fram 案例: ...
- [转]Oracle 调用存储过程并显示结果集 Oracle.DataAccess.Client OracleDbType.RefCursor
本文转自:http://liye9801.blog.163.com/blog/static/6019703200901244448950/ 今天学习了一个Oracle中的存储过程,一开始便被如果返回结 ...
随机推荐
- redis 全局命令 查看所有的键,删除键,检查键是否存在,获取过期时间,键的数据结构类型
Redis有5中数据结构,他们是键值对中的值,对于键来说,有一些通用的命令: 一.查看所有键 keys * 二.获取键总数:dbsize 三.检查键是否存在 exists 如果存在返回1,不存在返回0 ...
- ****** 二十八 ******、软设笔记【数据库】-分布式数据库、特点、数据存储、DBMS组成
分布式数据库 一.分布式数据库 分布式数据库由一组数据组成,这些数据物理上分布在计算机网络的不同结点(场地)上,逻辑上是属于同一个系统.每个结点可以执行局部应用,也能通过网络通信子 ...
- web-hacking
https://wizardforcel.gitbooks.io/web-hacking-101/content/1.html
- 【python小练】0012题
第 0012 题: 敏感词文本文件 filtered_words.txt,里面的内容 和 0011题一样,当用户输入敏感词语,则用 星号 * 替换,例如当用户输入「北京是个好城市」,则变成「**是个好 ...
- Java SE之正则表达式一:概述
正则表达式 概念 定义:符合一定规则的表达式 作用:用于专门操作字符串 特点:用于一些特定的符号表示代码的操作,这样就简化了长篇的程序代码 好处:可以简化对字符串的复杂操作 弊端:符号定义越多,正则越 ...
- luogu P4099 [HEOI2013]SAO
传送门 吐槽题目标题 这个依赖关系是个树,可以考虑树型dp,设f_i表示子树i的答案 因为这是个序列问题,是要考虑某个数的位置的,所以设\(f_{i,j}\)表示子树i构成的序列,i在第j个位置的方案 ...
- Leetcode#657. Judge Route Circle(判断路线成圈)
题目描述 初始位置 (0, 0) 处有一个机器人.给出它的一系列动作,判断这个机器人的移动路线是否形成一个圆圈,换言之就是判断它是否会移回到原来的位置. 移动顺序由一个字符串表示.每一个动作都是由一个 ...
- vue WepApp 音乐App前的准备
一.安装环境部分 ①.谷歌环境 访问数据自动格式化 Google jsonview插件 ②安装 vue环境 node必须是6.95以上npm必须是3.10以上 node -v 和npm -v 检查版本 ...
- Nginx系列7:SSL证书的公信力是如何保证的?
1.PKI公钥基础设施 2.证书类型 参考链接:ssl证书类型区别 3.证书链
- 【MongoDB】 Failed to connect to 127.0.0.1:27017, reason: Connection refused
由于项目需要,在一台虚拟机上安装了MongoDB,但是在启动的时候,出现如下错误: [root@localhost bin]# ./mongo MongoDB shell version v3.4.0 ...