Postgresql动态SQL查询
我需要动态创建此查询:Postgresql动态SQL查询,sql,postgresql,dynamic,Sql,Postgresql,Dynamic,我需要动态创建此查询: INSERT INTO "calle" (a, b, c, d) SELECT l.id_localidad, v.tipovial, v.nomvial, v.geom FROM "010010001v" AS v, dblink('dbname=xxx port=xxxx host=xxxxx user=xxx password=xxxxx', 'SELECT id_localidad FROM "localidadesurbanas
INSERT INTO "calle" (a, b, c, d)
SELECT l.id_localidad, v.tipovial, v.nomvial, v.geom
FROM "010010001v" AS v,
dblink('dbname=xxx port=xxxx host=xxxxx user=xxx password=xxxxx',
'SELECT id_localidad
FROM "localidadesurbanas"
WHERE cvgeo = ''010010001''')
AS l(id_localidad integer);
唯一改变的是:
...
FROM "010010001v"
...
WHERE cvgeo = ''010010001''')
...
用于:
我希望澄清。
如果可能的话,还有学习PL/pgSQL的教程。
谢谢
execute
仅在plpgsql函数内部工作。我假设您已经有了一个工作函数。最好的pl/pgsql教程是Postgres文档本身。。。
SELECT tablename
FROM pg_tables
WHERE schemaname = 'public'
AND tablename LIKE '01%v';
"010010001v"
"010010293v"
"010010479v"
...
execute format ($dynamic$
INSERT INTO "calle" (a, b, c, d)
SELECT l.id_localidad, v.tipovial, v.nomvial, v.geom
FROM
%I AS v,
dblink(
'dbname=xxx port=xxxx host=xxxxx user=xxx password=xxxxx',
'
SELECT id_localidad
FROM "localidadesurbanas"
WHERE cvgeo = $1
'
) AS l(id_localidad integer);
$dynamic$, '010010001v'
) using '010010001'