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;