最近项目要用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·调用存储过程并返回结果的更多相关文章

  1. EF 6 调用存储过程时返回多结果集和OUTPUT参数问题

    原文地址:http://q.cnblogs.com/q/56836/ 各位大侠,提问一个关于EF6调用存储过程时返回多结果集和OUTPUT参数问题 目前已经可以调用存储过程并且可以返回多个结果集. 但 ...

  2. spring jdbctemplate调用存储过程,返回list对象

    注:本文来源于<  spring jdbctemplate调用存储过程,返回list对象 > spring jdbctemplate调用存储过程,返回list对象 方法: /** * 调用 ...

  3. Spring data jpa 调用存储过程处理返回参数及结果集

    一.环境 1.此随笔内容基于spring boot整合的spring data jpa项目, 2.数据库为mysql 5.7.9版本 二.内容 1. 新建存储过程 pro_query_object B ...

  4. Asp.Net中调用存储过程并返回输出参数

    /// <summary> /// 调用存储过程返回参数 /// </summary> /// <param name="orderId">&l ...

  5. ibatis调用存储过程(无返回参数)

    ibatis调用存储过程例子: java: getSqlMapClientTemplate().insert(sql, paraMap) ibatis xml: <parameterMap id ...

  6. python调用存储过程失败返回1787错误

    (1787, 'When @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1, the statements CREATE TEMPORARY TABLE and DROP T ...

  7. 关于Set Nocount ON的性能 |c#调用存储过程的返回值总是-1

    原文地址:http://www.tuicool.com/articles/qe6BZbR 也许因为它太过于简单,自己一直没能好好关注这个语句,只记得"只是"提高点性能而已.有时会在存储过程中写上几句, ...

  8. EF6调用存储过程,返回多个结果集处理

    链接:http://www.codeproject.com/Articles/675933/Returning-Multiple-Result-Sets-from-an-Entity-Fram 案例: ...

  9. [转]Oracle 调用存储过程并显示结果集 Oracle.DataAccess.Client OracleDbType.RefCursor

    本文转自:http://liye9801.blog.163.com/blog/static/6019703200901244448950/ 今天学习了一个Oracle中的存储过程,一开始便被如果返回结 ...

随机推荐

  1. redis 全局命令 查看所有的键,删除键,检查键是否存在,获取过期时间,键的数据结构类型

    Redis有5中数据结构,他们是键值对中的值,对于键来说,有一些通用的命令: 一.查看所有键 keys * 二.获取键总数:dbsize 三.检查键是否存在 exists 如果存在返回1,不存在返回0 ...

  2. ****** 二十八 ******、软设笔记【数据库】-分布式数据库、特点、数据存储、DBMS组成

    分布式数据库    一.分布式数据库        分布式数据库由一组数据组成,这些数据物理上分布在计算机网络的不同结点(场地)上,逻辑上是属于同一个系统.每个结点可以执行局部应用,也能通过网络通信子 ...

  3. web-hacking

    https://wizardforcel.gitbooks.io/web-hacking-101/content/1.html

  4. 【python小练】0012题

    第 0012 题: 敏感词文本文件 filtered_words.txt,里面的内容 和 0011题一样,当用户输入敏感词语,则用 星号 * 替换,例如当用户输入「北京是个好城市」,则变成「**是个好 ...

  5. Java SE之正则表达式一:概述

    正则表达式 概念 定义:符合一定规则的表达式 作用:用于专门操作字符串 特点:用于一些特定的符号表示代码的操作,这样就简化了长篇的程序代码 好处:可以简化对字符串的复杂操作 弊端:符号定义越多,正则越 ...

  6. luogu P4099 [HEOI2013]SAO

    传送门 吐槽题目标题 这个依赖关系是个树,可以考虑树型dp,设f_i表示子树i的答案 因为这是个序列问题,是要考虑某个数的位置的,所以设\(f_{i,j}\)表示子树i构成的序列,i在第j个位置的方案 ...

  7. Leetcode#657. Judge Route Circle(判断路线成圈)

    题目描述 初始位置 (0, 0) 处有一个机器人.给出它的一系列动作,判断这个机器人的移动路线是否形成一个圆圈,换言之就是判断它是否会移回到原来的位置. 移动顺序由一个字符串表示.每一个动作都是由一个 ...

  8. vue WepApp 音乐App前的准备

    一.安装环境部分 ①.谷歌环境 访问数据自动格式化 Google jsonview插件 ②安装 vue环境 node必须是6.95以上npm必须是3.10以上 node -v 和npm -v 检查版本 ...

  9. Nginx系列7:SSL证书的公信力是如何保证的?

    1.PKI公钥基础设施 2.证书类型 参考链接:ssl证书类型区别 3.证书链

  10. 【MongoDB】 Failed to connect to 127.0.0.1:27017, reason: Connection refused

    由于项目需要,在一台虚拟机上安装了MongoDB,但是在启动的时候,出现如下错误: [root@localhost bin]# ./mongo MongoDB shell version v3.4.0 ...