Portál AbcLinuxu, 18. dubna 2024 15:25
CREATE OR REPLACE FUNCTION pokus(varchar) RETURNS int4 AS ' DECLARE v ALIAS FOR $1; BEGIN SELECT AsText(the_geom) FROM v; RETURNS 0; END; ' LANGUAGE plpgsql; SELECT pokus('b'); ERROR: syntax error at or near "$1" at character 32 QUERY: SELECT Astext(the_geom) FROM $1 CONTEXT: PL/pgSQL function "pokus" line 4 at SQL statement LINE 1: SELECT Astext(the_geom) FROM $1 ^Budu vdecny za jakykoliv podnet. Predem dekuji.
CREATE OR REPLACE FUNCTION pokus(varchar) RETURNS integer AS ' DECLARE v ALIAS FOR $1; x INTEGER; BEGIN EXECUTE ''SELECT id INTO x FROM '' || v || '' LIMIT 1''; RETURN x; END; ' LANGUAGE plpgsql;Pozor! SELECT INTO v PostgreSQL 7.4.8 ještě není implementováno. Lepší by asi bylo použít nějaký cyklus (v tomto případě)... RTFM a take it easy
CREATE OR REPLACE FUNCTION mujpokus(varchar) RETURNS varchar AS ' DECLARE v ALIAS FOR $1; x INTEGER; BEGIN EXECUTE ''SELECT AsText(the_geom) INTO x FROM '' || v || '' LIMIT 1''; RETURN x; END; ' LANGUAGE plpgsql;mi to hodi tuto hlasku:
kam038=# SELECT mujpokus('b'); ERROR: EXECUTE of SELECT ... INTO is not implemented yet CONTEXT: PL/pgSQL function "mujpokus" line 5 at execute statementTak to vypada ze to neimplementovali ani sem Ale dik za radu, zajimalo by me, jestli je mozny nak ziskat vystup z ty funkce spusteny v EXECUTE. Zkousel jsem FOUND bez toho SELECT INTO a nic. Sem si myslel, ze to je uplne kravina resitelna bez problemu ale vypada to, ze tenhle jazyk ma pomerne velky omezeni. Nevite v cem by se podobna vec mohla napsat pokud mozno bez vetsich problemu?
FOR record_or_row IN EXECUTE text_expression LOOP statements END LOOP;Proto ten FOR...
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.