Buenas, tengo el siguiente problema:
Pretendo crear la siguiente función que elimine aquellos registros de la primera tabla que "espacialmente" existan en la segunda tabla (comparo sus columnas geométricas)
Código:
CREATE OR REPLACE FUNCTION srmdiferencia_espacial(text, text)
RETURNS text AS
$BODY$
/*Elimina de $1 aquellas entidades que es coincidan espacialmente con $2*/
DECLARE
ret text;
BEGIN
ret='OK';
EXECUTE 'DELETE from '||$1||' WHERE ST_Equals('||$1||'.geom,'||$2||'.geom) = ''true''';
RETURN ret;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE STRICT
COST 100;
ALTER FUNCTION srmdiferencia_espacial(text, text) OWNER TO postgres;
El caso es que me salta el siguiente error:
ERROR: falta una entrada para la tabla «vertexline_ferrocarril» en la cláusula FROM
SQL state: 42P01
Context: PL/pgSQL function "srmdiferencia_espacial" line 7 at sentencia EXECUTE
donde «vertexline_ferrocarril» es el resultado de sustituir $2 por el valor introducido en el segundo parámetro de la llamada a la función.
¿Alguien sabe decirme cual es el problema y/o proponerme una solución?. Gracias de antemano.