Ciao a tutti, spero possiate aiutarmi

Delphi 7 en
Zeos lib 6.6.6-stable
Postgresql 8.4.7

In una tabella tbl_protocollo_categoria ho un campo auto incrementante codice_protocollo_categoria di tipo SERIAL, in altri progetti per recuperare il valore assegnato dal DB al campo serial, utilizzavo un campo di appoggio nella tabelle in cui inserivo l’ip della postazione che aveva effettuato l’inserimento e poi con una select con clausola where = ip_macchina recuperavo il valore inserito e con un update aggiornano il campo ip_macchina = ‘’.

Volendo utilizzare la funzione currval() di postgresql non riesco a recuperare l’ultimo valore serial inserito dalla sessione corrente il pezzo di codice è questo:
codice:
with sqlProtocolloCategorie do
begin
      SQL.Clear();
      SQL.Add( insertProtocolloCategoria );  // insertProtocolloCategoria contiene il codice sql per l’inserimento
       ExecSQL();
	// fino qui tutto ok
       Active := false;
       SQL.Clear();
       SQL.Add('SELECT pg_catalog.currval(''tbl_protocollo_categoria_codice_protocollo_categoria_seq'')' );
       SQL.Open();
	// qui mi da il seguente errore:
	EDatabaseError ‘sqlProtocolloCategorie: Filed ‘codice_protocollo_categorie’ not found
	Il campo codice_protocollo_categorie è il campo auto incrementante di tipo serial
	Ho provato anche a modificare la query in questo modo:
	('SELECT currval(''SELECT currval(''tbl_protocollo_categoria_codice_protocollo_categoria_seq'') from         tbl_protocollo_categoria' );
mettendo il nome della tabella … from tbl_protocollo_categoria, ma l’errore è sempre quello.
PS Nel Field Editor del componente query sqlProtocolloCategoria sono enumerati tutti i campi della tabella

end;
Grazie per l’aiuto