INTO
Passes SELECT
output into variables
PSQL
In PSQL the INTO
clause is placed at the end of the SELECT
statement.
SELECT [...] <column-list> FROM ... [...] [INTO <variable-list>] <variable-list> ::= <variable> [, <variable> ...] <variable> ::= varname | ':' varname
Note
|
The colon prefix before local variable names in PSQL is optional in the |
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, unless an explicit or implicit cursor name is specified.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.
Examples
-
Selecting aggregated values and passing them into previously declared variables
min_amt
,avg_amt
andmax_amt
:select min(amount), avg(cast(amount as float)), max(amount) from orders where artno = 372218 into min_amt, avg_amt, max_amt;
NoteThe
CAST
serves to make the average a real number;otherwise, sinceamount
is presumably an integer field, SQL rules would truncate it to the nearest lower integer. -
A PSQL trigger that retrieves two values as a
BLOB
field (using theLIST()
function) and assigns itINTO
a third field:select list(name, ', ') from persons p where p.id in (new.father, new.mother) into new.parentnames;