====== Postgres, transporter i funkcije koje menjaju podatke ======
Način na koji sistem za razmenu podataka hvata zapise za žurnal izmena oslanja se na //Records Affected// svojstvo Jet OLE DB provajdera.\\
Na žalost, implementacija ovog svojstva u PostgreSQL nije potpuno identična (defakto, standard i ne postoji).
Usled toga, u cilju logovanja poziva Pg funkcijama koje menjaju podatke, neophodno je funkciju napisati tako da:
* rezultat poziva bude tabela sa jednom kolonom pod nazivom **dummy** integer tipa
Na primer:
CREATE OR REPLACE FUNCTION bpub.cs3_fixpremestdts(
)
RETURNS TABLE(dummy integer)
LANGUAGE 'sql'
COST 100
VOLATILE
ROWS 1000
AS $BODY$
WITH jfrom AS (SELECT U.DTStamp,U.ulid FROM Ulaz AS U INNER JOIN Ulaz AS S ON U.Link=S.UlID WHERE U.DTStamp>=S.DTStamp AND U.DocTip IN (SELECT DTID FROM defDocTip WHERE FPrenos))
UPDATE Ulaz AS AU_U
SET DTStamp=jfrom.DTStamp-0.00002
FROM jfrom
WHERE AU_U.ulid=jfrom.ulid
RETURNING 1;
$BODY$;
ili ako funkcija nije prost SQL, već treba ručno vratiti pomenutu kolonu:
CREATE OR REPLACE FUNCTION bpub.cs2_set_vaz_period_bulk(
indocid integer)
RETURNS TABLE(dummy integer)
LANGUAGE 'plpgsql'
COST 100
VOLATILE
AS $BODY$
...
-- kraj
RETURN QUERY SELECT 1;
END;
$BODY$;