ibatis会经常调用存储过程,有的有返回值有的是输出参数,下面是带输出参数的存储过程调用:
java代码:
HashMap<String,Object> paramMap = new HashMap<String,Object>();
paramMap.put("UGName", "01");
paramMap.put("UName", "fff");
sqlMapClient.queryForObject("test.getpro", paramMap);
System.out.println("===="+paramMap.get("TP"));
xml代码:
<parameterMap class="map" id="swapParameters">
<parameter property="UGName" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="UName" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
<parameter property="TP" javaType="java.lang.String" jdbcType="VARCHAR" mode="OUT"/>
</parameterMap>
<procedure id="test.getpro" parameterMap="swapParameters">
{CALL Proc_JDBCparamTest(?,?,?)}
</procedure>
parameterMap里面参数的顺序要和问号的顺序一致
存储过程:
ALTER PROCEDURE [dbo].[Proc_JDBCparamTest]
(
@UGName varchar,–代理账号
@UName varchar,–姓名
@TP varchar OUTPUT –提示内容
)
WITH EXECUTE AS CALLER
AS
BEGIN
declare @time [datetime];
set @time=GETDATE();
end
begin
insert into TabjdbcTest(UGName,UName,Time)
values(@UGName,@UName,@time)
set @TP=’存储过程返回结果’;
end
“`
如果存储过程有return值。那莫 {CALL ?=Proc_JDBCparamTest(?,?,?)},参数要和问号一致