Postgresql Процедура выбора во временную таблицу - PullRequest
0 голосов
/ 19 апреля 2020

Будучи недавно преобразованным с SQL Сервера, я немного узнаю Postgresql.

Я действительно ненавижу писать вложенные операторы selevt в SQL, так как считаю, что читаемость и удобство сопровождения кода при этом ухудшается.

Обычно я создаю хранимую процедуру на SQL сервере, где я выбираю что-то во временную таблицу, которую затем могу использовать в другом операторе выбора.

CREATE OR ALTER PROCEDURE Procname
AS

BEGIN

SELECT
    Somewhere.Col_1,
    Somewhere.Col_2

INTO
    #Temptable

FROM
    Somewhere Somewhere

SELECT
    Temptable.Col_1,
    Somewhere_Else.Col3

FROM
    #Temptable Temptable

INNER JOIN
    Somewhere_Else.Col_2 = Temptable.Col_2

END

Когда я выполню эту процедуру, мне будет возвращен окончательный запрос выбора

Как бы я повторил эту процедуру в Postgresql?

Я знаю, что вы можете выбрать в временная таблица, но я не могу понять, как использовать эту таблицу в следующем операторе select в той же процедуре

1 Ответ

0 голосов
/ 19 апреля 2020

Создайте функцию, возвращающую множество, вообще не нужна временная таблица.

CREATE function Procname()
  returns table(col_1 ???, col2 ???) --<< change data types here
AS
$$
  SELECT
      Temptable.Col_1,
      Somewhere_Else.Col3
  FROM Somewhere Temptable
    INNER JOIN Somewhere_Else ON Somewhere_Else.Col_2 = Temptable.Col_2;
$$
language sql
stable;

Но для такого простого утверждения я бы предпочел создать представление.

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