Простая Postgres процедура с 2-мя обновлениями таблиц не работает - PullRequest
0 голосов
/ 31 марта 2020

Я программист от MS SQL до PostgreSQL. У меня трудности с получением простой процедуры для работы. Я уверен, что что-то упустил. В поисках вашего опыта.

Ниже я создаю постоянную таблицу A и временную таблицу B. Я пытаюсь обновить, выполняя объединение таблиц A и B. По какой-то причине

  1. ожидает, что все таблицы будут доступны. У меня большой список столбцов, поэтому я выбрал select into.
  2. Я выполнил операторы индивидуально и только при создании 2 таблиц это позволяет создать процедуру
  3. даже после успешного создания процедуры при запуске ошибка времени, когда я пытаюсь вызвать процедуру

Я пытался 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";

$$;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...