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


---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Reply via email to