CREATE OR REPLACE FUNCTION ecf_combine_regions(text, int, int)
RETURNS void
VOLATILE SECURITY DEFINER
LANGUAGE plpgsql
AS '
DECLARE
customregion ALIAS FOR $1;
snumber ALIAS FOR $2;
pnumber ALIAS FOR $3;
BEGIN
insert into ecf_region_scenario (wkb_geometry)
select customregion.wkb_geometry from customregion where customregion.p_id=pnumber and customregion.s_id=snumber
;
RETURN;
END';
Die ge-aliaste Variable customregion soll als Tabellenname in der Funktion übergeben werden.
Die eigentliche Funktion ist komplizierter deswegen muss ich die Kombination tabelle.spalte in dem Select verwenden.
Nun bekomme ich beim Ausführen der Funktion
select ecf_combine_regions(geo,1,1)
den Fehler "Column “geo” does not exist
obwohl doch geo alias customregion ein Tabellenname ist.
Wer kann mir helfen?
Muss ich da irgendetwas mit Single oder Doublequotes in dem Select statement in der Funktion drehen?
Ok. geändert, jetzt gibts schon beim Ausführen des create function statements eine Fehlermeldung: ERROR: syntax error at or near “insert”
CREATE OR REPLACE FUNCTION ecf_combine_regions(text, int, int) RETURNS void VOLATILE SECURITY DEFINER LANGUAGE plpgsql AS ' DECLARE customregion ALIAS FOR $1; snumber ALIAS FOR $2; pnumber ALIAS FOR $3; BEGIN
EXECUTE 'insert into ecf_region_scenario (wkb_geometry)
select '||customregion||'.wkb_geometry from '||customregion||' where '||customregion||'.p_id='||pnumber||' and '||customregion||'.s_id='||snumber
||'using customregion, snumber,pnumber';
RETURN;
END';
test=*# create or replace function test() returns text as 'begin return ''bla''; end;'language plpgsql;
CREATE FUNCTION
test=*# select test();
test
------
bla
(1 row)
test=*# create or replace function test() returns text as $$begin return 'bla'; end;$$language plpgsql;
CREATE FUNCTION
test=*# select test();
test
------
bla
(1 row)