У меня есть таблица, в которой у меня есть список городов и присвоенных им уникальных кодов (city_code_table).
У меня также есть таблица, в которой у меня есть список названий улиц и код городов ( street_table).
Я хотел бы создать функцию, в которой на входе указывается название города, и она создает таблицу с улицами в этом городе.
Функция будет выглядеть следующим образом :
CREATE OR REPLACE FUNCTION func_1(city_name text)
RETURNS VOID AS
$body$
BEGIN
!!!MISSING PART!!!
EXECUTE 'CREATE TABLE '||quote_ident(city_name)||'_streets AS
SELECT * from street_table where city_code = temporary_variable;'
RETURN;
END;
$body$
LANGUAGE plpqsql;
В пропущенной части я хотел бы как-то сохранить переменную временного_образа в результате
SELECT city_code from city_code_table where city_name is 'Budapest';
Я знаю, что на этом языке это работает не так, но я на 100 % уверен, что результатом последнего кода всегда будет одна запись, а не больше. Я мог бы вставить это в предыдущие коды следующим образом:
SELECT * from street_table where city_code = (SELECT city_code from city_code_table where city_name is 'Budapest');
Я не очень хочу этого делать, потому что в полной функции я бы использовал этот код несколько раз, так что это решение действительно замедлило бы процесс, на мой взгляд. Также я знаю, что было бы намного проще сделать это, если бы у street_table были бы также названия городов, и не только коды, но это не я сам решаю это.
Спасибо за любую помощь заранее!