I am trying to call my Teradata
stored procedure using simpleJDBCcall but I always get ZERO result though data is available in my table. I tried to debug but no luck. here is my stored procedure. is there any thing I am doing wrong here?
REPLACE PROCEDURE MYPROC
(
IN ID VARCHAR(50)
)
DYNAMIC RESULT SETS 1
MAIN : BEGIN
DECLARE ltype VARCHAR(256);
DECLARE mainSql VARCHAR (5000);
DECLARE emptySql VARCHAR(5000);
DECLARE mainCur CURSOR WITH RETURN ONLY FOR mainStmt;
DECLARE emptyCur CURSOR WITH RETURN ONLY FOR emptyStmt;
SET mainSql = 'LOCKING ROW FOR ACCESS SELECT * FROM MYTABLE where ID = ''' || ID || ''';';
SET emptySQL = 'SELECT NULL AS ID;';
PREPARE mainStmt FROM mainSql;
PREPARE emptyStmt FROM emptySql;
BEGIN TRANSACTION;
SET statementNo = 100;
OPEN mainCur;
END TRANSACTION;
END MAIN;
and here is my simpleJDBCCall
simpleJdbcCall.withProcedureName("MYPROC").returningResultSet("mainCur",
BeanPropertyRowMapper.newInstance(MYCLASS.class) ).declareParameters(new SqlParameter(ID, Types.VARCHAR) );
SqlParameterSource namedParameters = new MapSqlParameterSource("ID", transId);
try {
Map<String, Object> out = simpleJdbcCall.execute(namedParameters);
System.out.println(out);
} catch (Exception e) {
System.err.println(e);
}