Поэтому мне нужно написать несколько динамиков c sql, например,
-- expects stmt to contain '%1$I' wherever the table name should be inserted
CREATE OR REPLACE FUNCTION executeForEachFooBarTable(stmt TEXT) RETURNS VOID AS $function$
DECLARE
foobar TEXT;
foobar_tables TEXT[] := array['foo', 'bar', 'baz', 'bam'];
BEGIN
FOREACH foobar IN ARRAY foobar_tables LOOP
EXECUTE format(stmt, foobar);
END LOOP;
END $function$
LANGUAGE plpsql VOLATILE;
DO $addSunshineColumnToFoobarTables$ BEGIN
PERFORM executeForEachFooBarTable($$
ALTER TABLE %1$I
ADD COLUMN is_sun_shining BOOLEAN DEFAULT TRUE
;
UPDATE f
SET f.is_sun_shining = w.is_sunny
FROM %1$I f
LEFT JOIN weather_station w ON f.weather_station_id = w.id
;
$$);
END $addSunshineColumnToFoobarTables$;
IntelliJ, настаивает на том, что оператор является строкой (и это правильно в этом, предоставлено), и отображает его в полностью зеленый.
Есть ли способ сделать так, чтобы он выделил синтаксис в строке? Я думаю, что есть пара SQL редакторов, которые сделали бы это?