Я программист от MS SQL до PostgreSQL. У меня трудности с получением простой процедуры для работы. Я уверен, что что-то упустил. В поисках вашего опыта.
Ниже я создаю постоянную таблицу A и временную таблицу B. Я пытаюсь обновить, выполняя объединение таблиц A и B. По какой-то причине
- ожидает, что все таблицы будут доступны. У меня большой список столбцов, поэтому я выбрал select into.
- Я выполнил операторы индивидуально и только при создании 2 таблиц это позволяет создать процедуру
- даже после успешного создания процедуры при запуске ошибка времени, когда я пытаюсь вызвать процедуру
Я пытался cte, но даже тогда он ошибается где-то в операторе Update. Это просто пример кода, который я разместил. Спасибо за ваше время.
CREATE or replace PROCEDURE "ASG"."loadABC"()
LANGUAGE SQL
AS $$
drop table "tableA";
SELECT "Code", c1, c2, c3
INTO "tableA"
FROM
(SELECT 1 "Code", 'A' c1, 'B' c2, 'update c' c3
union SELECT 2 "Code", 'A' c1, 'B' c2, 'update c' c3
union SELECT 3 "Code", 'A' c1, 'B' c2, 'update c' c3
)A
--JOIN other tables not necessary for this now
;
SELECT "Code", c1, c2, c3
INTO TEMPORARY TABLE "tableB"
FROM
(SELECT 1 "Code", 'A' c1, 'B' c2, 'update c' c3
union SELECT 2 "Code", 'A' c1, 'B' c2, 'update c' c3
union SELECT 3 "Code", 'A' c1, 'B' c2, 'update c' c3
)B;
update "tableA" A
set "c3" = b."c2"
from "tableB" b
where
(A."Code" = b."Code");
drop table "tableB";
$$;