I m having a problem while calling the procedure in prostgresql 8.2
from adoconnection, It gets executed for some time and after 5-10 call
it gives error startTransaction failed or CommitTransaction Failed.
CREATE OR REPLACE FUNCTION sp_getnewfiles(IN strserverid character
varying, IN nmaxcount integer, OUT stroutrecno character varying) AS
$BODY$
DECLARE
cur RECORD;
i integer;
BEGIN
i:=0;
LOCK TABLE inputtable IN ROW EXCLUSIVE MODE NOWAIT;
FOR cur IN select recno from InputTable where FileState=0 order by
recno limit nMaxCount for update
LOOP
if i=0 then
strOutRecNo:='recno=';
else
strOutRecNo:=strOutRecNo || ' or recno=';
end if;
strOutRecNo:=strOutRecNo||cur.recno;
update inputtable set filestate=1,serverid=strServerID where
recno=cur.recno;
i:=i+1;
END LOOP;
EXCEPTION
WHEN no_data_found THEN
--DO NOTHING
WHEN OTHERS THEN
--rollback;
RAISE EXCEPTION 'some error';
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE STRICT;
the calling code is
CADOXSet rset(pCnn);
ostringstream ost;
ost<<"select * from
sp_getnewfiles('"<<GetServerID()<<"',"<<nMaxCount<<")";
rset.Open(ost.str());
ASSERT(rset.IsEOF()==false);
strRecNo=rset.GetFieldValue(0);
the error I encountered after some number of calls is either -
Error message: Unspecified error
Engine Used: PgOleDb
Error type : StartTransaction failed
or
Error message: Unspecified error
Engine Used: PgOleDb
Error type : commitTransaction failed
Thanks in advance:
Nasim