public inbox for [email protected]  
help / color / mirror / Atom feed
From: Erwin Brandstetter <[email protected]>
To: pgsql-docs <[email protected]>
Subject: PL/pgSQL PERFORM WITH query
Date: Tue, 8 Feb 2022 23:14:05 +0100
Message-ID: <CAGHENJ6jaTJQ-0nFWg2Vkco28ffsDMLH=txZcgftvCFFPGGSww@mail.gmail.com> (raw)

The manual currently reads:
https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-GENERAL-SQL

> PERFORM query;

> This executes query and discards the result. Write the query the same way
you would write an SQL SELECT command, but replace the initial keyword
SELECT with PERFORM. For WITH queries, use PERFORM and then place the query
in parentheses. (In this case, the query can only return one row.)

But that only works for a single returned value (one column of one row).
Else we need to treat the WITH query like a subquery with alias. There was
a related question on Stackoverflow:

https://stackoverflow.com/questions/71040855/how-to-perform-a-cte-query-returning-multiple-rows-colu...

I suggest to clarify like:

For WITH queries, use PERFORM and place the query in parentheses. If the
query returns more than a single value (one column of one row) you must
treat it as subquery, writing PERFORM * FROM (query) my_alias;

Regards
Erwin


reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected]
  Subject: Re: PL/pgSQL PERFORM WITH query
  In-Reply-To: <CAGHENJ6jaTJQ-0nFWg2Vkco28ffsDMLH=txZcgftvCFFPGGSww@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox