Postgresql存储过程select into temp table。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Postgresql存储过程select into temp table。相关的知识,希望对你有一定的参考价值。

作为一个最近从SQL Server转换过来的人,我正在一点点了解Postgresql。

我真的很讨厌在SQL中写嵌套的selevt语句,因为我发现当我这样做时,代码的可读性和可维护性都会受到影响。

通常我会在SQL Server中创建一个存储过程,在这个存储过程中,我会选择一些东西到一个临时表中,然后我可以在另一个选择语句中使用。

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中复制这个过程?

我知道你可以选择到一个临时表,但我似乎不知道如何在同一个存储过程的下一个选择语句中使用这个表。

答案

创建一个集合返回函数,根本不需要临时表。

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;

但是对于这样一个简单的语句,我宁愿创建一个视图。

以上是关于Postgresql存储过程select into temp table。的主要内容,如果未能解决你的问题,请参考以下文章

关于oracle存储过程select into 未找到数据问题

如何解决oracle存储过程select into问题

关于oracle存储过程select into 未找到数据问题

MySQL存储过程中使用SELECT …INTO语句为变量赋值

01. 把存储过程结果集SELECT INTO到临时表

sql存储过程,select into