-1

このクエリを動的に作成する必要があります。

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''')
...

為に:

SELECT tablename
  FROM pg_tables
 WHERE schemaname = 'public'
   AND tablename LIKE '01%v';

"010010001v"
"010010293v"
"010010479v"
...

はっきりしたいと思います。そして可能であればPL/pgSQLを学ぶためのチュートリアル。ありがとう。

4

1 に答える 1

0
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'

executeplpgsql 関数内でのみ機能します。すでに機能している機能があると思います。

于 2013-05-29T15:57:56.817 に答える