INTO
Передача результатов SELECT
в переменные.
PSQL
SELECT [...] <column-list> FROM ... [...] [INTO <variable-list>] <variable-list> ::= [:]psqlvar [, [:]psqlvar ...]
В PSQL (хранимых процедурах, триггерах и др.) результаты выборки команды SELECT
могут быть построчно загруженыв локальные переменные (число, порядок и типы локальных переменных должны соответствовать полям SELECT
). Часто такая загрузка — единственный способ что-то сделать с возвращаемыми значениями.
Простой оператор SELECT
может быть использован в PSQL, только если он возвращает не более одной строки, то есть, если это запрос типа singleton (одиночка).Для запросов, возвращающих несколько строк, PSQL предлагает использовать оператор FOR SELECT.
Important
|
В случае, когда запрос не возвращает данных (ноль строк), значения переменных в списке |
Также, PSQL поддерживает оператор DECLARE CURSOR,который связывает именованный курсор с определенной командой SELECT — и этот курсор впоследствии может быть использован для навигации по возвращаемому набору данных.
В PSQL выражение INTO
должно появляться в самом конце команды SELECT
.
Important
|
Обратите внимание.
В PSQL двоеточие перед именами переменных является опциональным. |
Примеры
В PSQL, можно присвоить значения min_amt
, avg_amt
и max_amt
заранее объявленным переменным или выходным параметрам:
SELECT
MIN(amount),
AVG(CAST(amount AS float)),
MAX(amount)
FROM orders
WHERE artno = 372218
INTO min_amt,
avg_amt,
max_amt;
В данном запросе CAST
служит для корректного вычисления среднего значения.Если не привести значение к float
, то среднее значение будет обрезано до ближайшего целого значения.
В триггере:
SELECT LIST(name, ', ')
FROM persons p
WHERE p.id IN (new.father, new.mother)
INTO new.parentnames;