最近项目要用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. 新SQL temp

    select a.createtime, -- 日期 dept.name as deptName, -- 科室 (select t.docname from ( SELECT u.clinic_id ...

  2. spring注解第02课 包扫描@ComponentScan、@ComponentScans

    1.配置文件形式: <context:component-scan base-package="com.atguigu" /> spring会扫描此包下的@Servic ...

  3. 为数据库重新生成log文件

    1.新建一个同名的数据库 2.再停掉sql server(注意不要分离数据库) 3.用原数据库的数据文件覆盖掉这个新建的数据库 4.再重启sql server 5.此时打开企业管理器时会出现置疑,先不 ...

  4. 新萌渗透测试入门DVWA 教程2:DWVA 的配置和暴力破解靶机

    啊呀,上周忘了更新了.开篇时分,简短的深表歉意. 好了,现在开始配置DWVS. 0x00 配置DWVS 首先输入密码登陆,用户名admin,密码password 进入界面后选择,DVWA Securi ...

  5. oracle查看表空间数据文件使用情况

    -- 查看表空间数据文件使用情况 select a.*, round(a.usedgb/a.maxgb*100) || '%' usedPer from ( select t.TABLESPACE_N ...

  6. vs 调式连接oracle报错问题32,64位问题

    wind8 系统选择项目时生成目标平台选择为X86 报错“System.Exception”类型的未经处理的异常在 WindowsFormsApplication1.exe 中发生 其他信息: 尝试加 ...

  7. rabbitMQ学习2-Python与rabbitmq

    python客户端 # rabbitmq官方推荐的python客户端pika模块 pip3 install pika 应用场景1:单发送单接收 1.生产-消费者模型 P 是生产者 C 是消费者 中间h ...

  8. js 中编码(encode)和解码(decode)的三种方法

    js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 下 ...

  9. Python文件读取常用方法

    1. 关于读取文件 f.read() 读取文件中所有内容 f.readline() 读取第一行的内容 f.readlines() 读取文件里面所有内容,把每行的内容放到一个list里面 注:因为文件指 ...

  10. Django REST framework 第二章 Request and Response

    此章节开始真正的撰写REST framework的核心代码,介绍一系列必要的建立设计 Request Objects REST framework介绍了一个Request对象用来扩展常规的HttpRe ...