Я пишу plpgsql
функцию с именем таблицы в качестве параметра для выполнения моих задач по обновлению базы данных postgis, но сталкиваюсь с проблемой, связанной с кавычками в кавычках в операторе EXECUTE
.
Вот простой SQL-скрипт иотлично работает:
UPDATE baoluo SET sfzgjsyd='同时落在总规建设用地内外'
FROM lu_plan AS lu
WHERE ST_Overlaps(lu.geom, baoluo.geom)
AND lu.is_construc = '建设用地'
когда в plpgsql я использовал двойные кавычки для китайских символов, вот соответствующая часть кода:
CREATE or replace FUNCTION process(_tb1 regclass, town_name TEXT, town_id TEXT)
RETURNS VOID AS
$func$
DECLARE
city_name text := '文昌市'; -- assign at declaration
city_code text := '469005';
BEGIN
--更新字段:
EXECUTE format('
UPDATE %s SET sfzgjsyd="同时落在总规建设用地内外"
FROM lu_plan
WHERE ST_Overlaps(lu_plan.geom, %s.geom)
AND lu_plan.is_construc = "建设用地"', _tb1, _tb1);
END;
$func$
LANGUAGE plpgsql;
select process('public.baoluo', '保罗镇', '469005000');
Я ожидаю, что это работает нормально, но журнал показываетошибка с the field not exists
.