Sqlserver返回结果集的存储过程调用方式:
一、存储过程:
CREATE PROCEDURE [dbo].[ProcedureName]
@para1 VARchar(8)='HNZZC001',
@para2 VarChar(30)='2010-07-08 02:00:00',
@para3 VarChar(30)='2010-07-09 12:00:00'
AS
BEGIN
。。。。。。。。。。。。。。。
--查询临时表中的数据
SELECT * FROM #tempTable
END
二、Mybatis的映射文件
<!--结果集映射 -->
<resultMaptype="hashmap" id="ResultMap_test">
<resultproperty="Col1" column="列1"
javaType="java.sql.Timestamp" jdbcType="TIMESTAMP" />
<resultproperty="Col2" column="列2" javaType="java.sql.Timestamp" jdbcType="TIMESTAMP" />
<resultproperty="Col3" column="列3" javaType="java.lang.Integer" jdbcType="INTEGER"/>
</resultMap>
<parameterMaptype="hashmap" id="ParaMap_test">
<parameterproperty="result" mode="OUT" javaType="java.sql.ResultSet" jdbcType="OTHER" />
<parameterproperty="para1" mode="IN" javaType="java.lang.String" jdbcType="VARCHAR"/>
<parameterproperty="para2" mode="IN" javaType="java.lang.String" jdbcType="LONGVARCHAR"/>
<parameterproperty="para3" mode="IN" javaType="java.lang.String" jdbcType="LONGVARCHAR"/>
</parameterMap>
<selectid="procedureTest" parameterMap=" ParaMap_test " statementType="CALLABLE" resultMap=" ResultMap_test" >
{#{result} = call ProcedureName(#{para1}, #{ para2}, #{ para3})}
</select>
三、注意的2点:
1、要把结果集放到parameterMap中,并且要设置jdbcType为“OTHER”
2、在<select>中要写上resultMap,并且在select中不能用问号表示参数序列的模式调用存储过程
3、statementType要为CALLABLE类型