如何在PostgreSQL函数中使用WITH(CTE)语句

5

我将尝试在PostgreSQL函数中使用“WITH”语句,它是一种通用表达式。

以下是一个示例:

示例

 Create or replace function withFunction() returns void as
 $Body$
 Begin
  WITH cmn_l1
  AS
  (
    SELECT "PhoneNumber1","PhoneNumber2",
    DENSE_RANK() OVER(Partition by "PhoneNumber1" Order By "PhoneNumber2" )FoundIn
    From tablename;
  )
 SELECT DISTINCT * INTO temptable
 FROM cmn_l1
 WHERE FoundIn > 1;

 end;
 $Body$
 language plpgsql;

问题: 如何使用函数内的WITH执行并获取上述表格中的值?

1个回答

6

需要返回table

Create or replace function withFunction()
returns table(phone1 text, phone2 text) as

那么

select * from withFunction()

好的。所以在使用WITH之前不需要给出EXECUTE或PERFORM语句吗? - Sarfaraz Makandar
1
@Meem execute 用于动态 SQL,而 perform 则用于不想返回 select 结果的情况。 - Clodoaldo Neto
@Clodoaldo Neto,完全正确。非常感谢。 - Sarfaraz Makandar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接