Обсуждение: commit transaction failed

Поиск
Список
Период
Сортировка

commit transaction failed

От
nasim.sindri@gmail.com
Дата:
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