мое сомнение - следующее. У меня есть следующая хранившаяся процедура, которую это считает конечной целью реализовывать ту же функцию, но для трех различных схем (внутри той же базы данных). Мой код - следующий:
FOR i IN 1..4
loop
cod = 0;
esquemaTabla = '';
if i=1 AND muni = 'municipalidad' THEN
cod=1;
esquemaTabla := 'municipalidad';
end if;
if i=2 AND edu = 'educacion' THEN
cod=2;
esquemaTabla := 'educacion';
end if;
if i=3 AND salud = 'salud' THEN
cod=3;
esquemaTabla := 'salud';
end if;
if i=4 AND cementer = 'cementerio' THEN
cod=4;
esquemaTabla := 'cementerio';
end if;
insert into esquemaTable.tabla....
END loop;
Проблема - следующая, введя переменную в компьютер esquemaTable, постглинистый песчаник я беру это себе как имя схемы "esquemaTable" и не из-за Вашей стоимости, которая была бы "муниципалитетом", "образованием" или "здоровьем".
Это было бы ожидаемое поведение..., а следовательно я понимаю ты нуждаешься в стоимости dinГЎmico в esquemaTabla, поэтому должен выполнять эту консультацию insert into dinamicamente с execute и это осталось бы больше менее так:
FOR i IN 1..4
loop
cod = 0;
esquemaTabla = '';
if i=1 AND muni = 'municipalidad' THEN
cod=1;
esquemaTabla := 'municipalidad';
end if;
if i=2 AND edu = 'educacion' THEN
cod=2;
esquemaTabla := 'educacion';
end if;
if i=3 AND salud = 'salud' THEN
cod=3;
esquemaTabla := 'salud';
end if;
if i=4 AND cementer = 'cementerio' THEN
cod=4;
esquemaTabla := 'cementerio';
end if;
EXECUTE format('insert into %I.tabla...',esquemaTable) ;
END loop;
Или иначе сделай insert into внутри каждого if и ты лишаешь себя темы динамического выполнения, если тебя осложняет очень
FOR i IN 1..4
loop
cod = 0;
esquemaTabla = '';
if i=1 AND muni = 'municipalidad' THEN
cod=1;
insert into municipalidad.tabla....;
end if;
if i=2 AND edu = 'educacion' THEN
cod=2;
insert into educacion.tabla....;
end if;
if i=3 AND salud = 'salud' THEN
cod=3;
insert into municipalidad.tabla....;
end if;
if i=4 AND cementer = 'cementerio' THEN
cod=4;
insert into cementerio.tabla....;
end if;
END loop;