title: PostgreSQL stored procedure using iBatis
body: <p>The error occurred while applying a parameter map:  </p>
  
  <pre><code>--- Check the newSubs-InlineParameterMap.
  --- Check the statement (query failed).
  --- Cause:
  org.postgresql.util.PSQLException:
  ERROR: wrong record type supplied in RETURN NEXT Where:
  PL/pgSQL function "getnewsubs" line 34 at return next
  </code></pre>
  
  <p>the function detail is as below....</p>
  
  <pre><code>CREATE OR REPLACE FUNCTION getnewsubs(timestamp without time zone, timestamp without time zone, integer)
    RETURNS SETOF record AS
  $BODY$declare
  v_fromdt alias for $1;
  v_todt alias for $2;
  v_domno alias for $3;
  v_cursor refcursor;
  v_rec record;
  v_cpno bigint;
  v_actno int;
  v_actname varchar(50);
  v_actid varchar(100);
  v_cpntypeid varchar(100);
  v_mrp double precision;
  v_domname varchar(100);
  v_usedt timestamp without time zone;
  v_expirydt timestamp without time zone;
  v_createdt timestamp without time zone;
  v_ctno int;
  v_phone varchar;
  begin
  open v_cursor for select cpno,c.actno,usedt from cpnusage c inner join account s on s.actno=c.actno where usedt &gt;= $1 and usedt &lt; $2 and validdomstat(s.domno,v_domno) order by c.usedt;
  fetch v_cursor into v_cpno,v_actno,v_usedt;
  while found
  loop
  if isactivation(v_cpno,v_actno,v_usedt) IS TRUE  then
  select into v_actno,v_actname,v_actid,v_cpntypeid,v_mrp,v_domname,v_ctno,v_cpno,v_usedt,v_expirydt,v_createdt,v_phone a.actno,a.actname as name,a.actid as actid,c.descr as cpntypeid,l.mrp as mrp,s.domname as domname,c.ctno as ctno,b.cpno,b.usedt,b.expirydt,d.createdt,a.phone from account a
  inner join cpnusage b on a.actno=b.actno
  inner join cpn d on b.cpno=d.cpno
  inner join cpntype c on d.ctno=c.ctno
  inner join ssgdom s on a.domno=s.domno
  left join price_class l ON l.price_class_id=b.price_class_id
  where validdomstat(a.domno,v_domno) and b.cpno=v_cpno and b.actno=v_actno;
  
  select into v_rec v_actno,v_actname,v_actid,v_cpntypeid,v_mrp,v_domname,v_ctno,v_cpno,v_usedt,v_expirydt,v_createdt,v_phone;
  return next v_rec;
  end if;
  
  fetch v_cursor into v_cpno,v_actno,v_usedt;
  end loop;
  return ;
  end;$BODY$
    LANGUAGE 'plpgsql' VOLATILE;
  ALTER FUNCTION getnewsubs(timestamp without time zone, timestamp without time zone, integer) OWNER TO radius
  </code></pre>
  
  <p>If I run the function from the console it runs fine and gives the correct response.  But when used through java it causes the above error.</p>