6.1.13. INTO
Used for
Passing SELECT
output into variables
Available in
PSQL
In PSQL code (triggers, stored procedures and executable blocks), the results of a SELECT
statement can be loaded row-by-row into local variables. It is often the only way to do anything with the returned values at all. The number, order and types of the variables must match the columns in the output row.
A “plain” SELECT
statement can only be used in PSQL if it returns at most one row, i.e., if it is a singleton select. For multi-row selects, PSQL provides the FOR SELECT
loop construct, discussed later in the PSQL chapter. PSQL also supports the DECLARE CURSOR
statement, which binds a named cursor to a SELECT
statement. The cursor can then be used to walk the result set.
Syntax
In PSQL the INTO
clause is placed at the very end of the SELECT
statement.
SELECT [...] <column-list>
FROM ...
[...]
[INTO <variable-list>]
<variable-list> ::= [:]psqlvar [, [:]psqlvar ...]
The colon prefix before local variable names in PSQL is optional in the |
Examples
Selecting some aggregated values and passing them into previously declared variables min_amt
, avg_amt
and max_amt
:
select min(amount), avg(cast(amount as float)), max(amount)
from orders
where artno = 372218
into min_amt, avg_amt, max_amt;
The |
A PSQL trigger that retrieves two values as a BLOB
field (using the LIST()
function) and assigns it INTO
a third field:
select list(name, ', ')
from persons p
where p.id in (new.father, new.mother)
into new.parentnames;