怎么获取存储过程的返回值啊
比如我建立
create procedure test
@index int,
@count int output
as
begin select * from t
set @count=0
end我JdbcTemplate中如何获取count的返回值啊
比如我建立
create procedure test
@index int,
@count int output
as
begin select * from t
set @count=0
end我JdbcTemplate中如何获取count的返回值啊
这个返回的是List, 你返回个int就行了~
先声明
declareParameter(new SqlReturnResultSet("count",new MyRowMapper())//自定义一个int的RowMapper执行方法
Map<String, Object> parameters = new HashMap<String, Object>();//你的入参
Map outParameters = super.execute(parameters);
return (Integer)outParameters.get("count");试试
{
private static final String SQL = "test";
public SimpleSproc(DataSource ds)
{
setDataSource(ds);
setSql(SQL);
setFunction(true);
declareParameter(new SqlParameter("param", Types.INTEGER));
declareParameter(new SqlOutParameter("return_value", Types.INTEGER));
}
public int execute(int param)
{
Map in = new HashMap();
in.put("param", param);
System.out.println(String.valueOf(in)); Map out = execute(in); System.out.println(String.valueOf(out));
return (Integer)out.get("return_value");
}返回值可以取,但是就是output参数取不到,还有就是取不到select以后的东西
这是什么意思?再声明一个 resultset返回的 mapper,然后(List)out.get("return_Mapper");
@param int
AS
BEGIN
SET NOCOUNT ON;
select * from bank
return @param
END没有问题,但是如果改成ALTER PROCEDURE [dbo].[testsp]
@param int ,
@ttt int output
AS
BEGIN
SET NOCOUNT ON;
select * from bank
set @ttt=1
return @param
END
public class SimpleSproc extends StoredProcedure
{
private static final String SQL = "testsp";
public SimpleSproc(DataSource ds)
{
setDataSource(ds);
setSql(SQL);
setFunction(true);
declareParameter(new SqlParameter("param", Types.INTEGER));
declareParameter(new SqlOutParameter("ttt", Types.INTEGER));
compile();
}
public int execute(int param)
{
Map in = new HashMap();
in.put("param", 1); System.out.println(String.valueOf(in)); Map out = execute(in); System.out.println(String.valueOf(out));
//return (Integer)out.get("return_value");
return 1;
}
}调用就报
Exception in thread "main" org.springframework.jdbc.BadSqlGrammarException: CallableStatementCallback; bad SQL grammar [{? = call testsp(?)}]; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 形参 "@param" 未声明为 OUTPUT 参数,但传递进来的实参请求输出。
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 形参 "@param" 未声明为 OUTPUT 参数,但传递进来的实参请求输出。
public class SimpleSproc extends StoredProcedure
{
private static final String SQL = "testsp";
public SimpleSproc(DataSource ds)
{
setDataSource(ds);
setSql(SQL);
setFunction(true);
declareParameter(new SqlParameter("param", Types.INTEGER));
declareParameter(new SqlParameter("ttt", Types.INTEGER));
//自定义mapper
declareParameter(new SqlReturnResultSet("return_value",new MyRowMapper());
declareParameter(new SqlOutParameter("ttt", Types.INTEGER));
compile();
}
public int execute(int param)
{
Map in = new HashMap();
in.put("param", 1);
in.put("ttt", 1); Map out = execute(in); System.out.println(String.valueOf(out.get("return_value")));
System.out.println(String.valueOf(out.get("ttt")));
return 1;
}
}