簡體   English   中英

Postgresql 程序 select 進入臨時表

[英]Postgresql Procedure select into temp table

作為最近從 SQL 服務器轉換過來的人,我對 Postgresql 有了一點了解。

我真的很討厭在 SQL 中編寫嵌套的 selevt 語句,因為我發現代碼的可讀性和可維護性會受到影響。

通常我會在 SQL 服務器中創建一個存儲過程,在那里我會將 select 一些東西放入一個臨時表中,然后我可以在另一個 select 語句中使用它。

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

當我執行此過程時,我將返回最終的 select 查詢

我將如何在 Postgresql 中復制此過程?

我知道您可以將 select 放入一個臨時表中,但我似乎無法弄清楚如何在同一過程中的下一個 select 語句中使用該表

創建一個返回 function 的集合,根本不需要臨時表。

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;

但是對於這么簡單的陳述,我寧願創建一個視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM