Удалить скобки в цикле postgresql - PullRequest
0 голосов
/ 30 октября 2018

Может кто-нибудь помочь мне понять, почему я получаю скобки вокруг имени схемы nspname? И / или, как это удалить, чтобы цикл работал?

DO $$
DECLARE
    views_ CURSOR FOR
        SELECT nspname
        FROM pg_catalog.pg_namespace
        WHERE nspname LIKE '%scemanames%';
BEGIN
    FOR nspname IN views_ LOOP
        EXECUTE 'INSERT INTO forkert_ejendom_roert SELECT * FROM ' || nspname || '.viewname';
        -- Do something with nbRow
    END LOOP;
END$$;

Вывод, который я получаю:

ERROR: syntax error at or near ")"
LINE 1: ...m_roert SELECT * FROM ('schemanames).bbr_punk...
                                     ^
QUERY: INSERT INTO forkert_ejendom_roert SELECT * FROM (name of the schema).viewname 
CONTEXT: PL/pgSQL function inline_code_block line 9 at EXECUTE 

********** Error **********
ERROR: syntax error at or near ")" SQL state: 42601 
Context: PL/pgSQL function inline_code_block line 9 at EXECUTE

1 Ответ

0 голосов
/ 30 октября 2018

Переменная цикла является записью (фактически содержащей один столбец), попробуйте:

    FOR rec IN views_ LOOP
        EXECUTE 'INSERT INTO forkert_ejendom_roert SELECT * FROM ' || rec.nspname || '.viewname';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...