为美元引用的字符串打开 sql 突出显示?
Turn on sql highlighting for dollar-quoted strings?
所以我需要写一些动态的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 编辑会这样做?
使用 Language Injection 功能(从 Alt+Enter 弹出窗口):
所以我需要写一些动态的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 编辑会这样做?
使用 Language Injection 功能(从 Alt+Enter 弹出窗口):