pl/pgsql perform and execute return wrong values...

Started by alex b.about 22 years ago2 messagesgeneral
Jump to latest
#1alex b.
mailinglists1@gmx.de

CREATE OR REPLACE FUNCTION testifinserted(text) RETURNS bool AS '
DECLARE
testtext ALIAS FOR $1;
anfr text;
BEGIN
anfr := ''SELECT bla FROM testtabelle WHERE bla = '' ||
quote_literal(testtext);
RAISE NOTICE ''%'', anfr; -- to show the request
EXECUTE anfr;
IF FOUND THEN
RAISE NOTICE ''jupp, % gefunden in testtabelle'', testtext;
RETURN true;
ELSE
RETURN false;
END IF;
END;
' LANGUAGE plpgsql;

test=> SELECT * FROM testtabelle;
bla
-----
muh
(1 row)

test=> SELECT testifinserted('muh');
NOTICE: SELECT bla FROM testtabelle WHERE bla = 'muh'
testifinserted
----------------
f
(1 row)

------------------------------------
WHY ????

seems like PERFORM always returns TRUE and EXECUTE always FALSE...

-- 
+++ NEU bei GMX und erstmalig in Deutschland: T�V-gepr�fter Virenschutz +++
100% Virenerkennung nach Wildlist. Infos: http://www.gmx.net/virenschutz
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: alex b. (#1)
Re: pl/pgsql perform and execute return wrong values...

=?ISO-8859-1?Q?=22Alexander_Bl=FCm=22?= <mailinglists1@gmx.de> writes:

seems like PERFORM always returns TRUE and EXECUTE always FALSE...

EXECUTE does not affect FOUND. This is per documentation.

regards, tom lane