39.4. ÐÑÑажениÑ
ÐÑе вÑÑажениÑ, иÑполÑзÑемÑе в опеÑаÑоÑÐ°Ñ PL/pgSQL, обÑабаÑÑваÑÑÑÑ Ð¾ÑновнÑм иÑполниÑелем SQL-ÑеÑвеÑа. ÐапÑимеÑ, Ð´Ð»Ñ Ð²ÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ñакого вÑÑажениÑ:
IF вÑÑажение THEN ...
PL/pgSQL оÑпÑÐ°Ð²Ð¸Ñ ÑледÑÑÑий запÑÐ¾Ñ Ð¸ÑполниÑÐµÐ»Ñ SQL:
SELECT вÑÑажение
ÐÑи ÑоÑмиÑовании ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SELECT вÑе вÑ
Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¸Ð¼Ñн пеÑеменнÑÑ
PL/pgSQL заменÑÑÑÑÑ Ð¿Ð°ÑамеÑÑами, как подÑобно опиÑано в ÐодÑазделе 39.10.1. ÐÑо позволÑÐµÑ Ð¾Ð´Ð¸Ð½ Ñаз подгоÑовиÑÑ Ð¿Ð»Ð°Ð½ вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SELECT и повÑоÑно иÑполÑзоваÑÑ ÐµÐ³Ð¾ в поÑледÑÑÑиÑ
вÑÑиÑлениÑÑ
Ñ ÑазлиÑнÑми знаÑениÑми пеÑеменнÑÑ
. Таким обÑазом, пÑи пеÑвом иÑполÑзовании вÑÑажениÑ, по ÑÑÑи пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð²Ñполнение ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ PREPARE. ÐапÑимеÑ, еÑли Ð¼Ñ Ð¾Ð±ÑÑвили две ÑелоÑиÑленнÑе пеÑеменнÑе x и y, и напиÑали:
IF x < y THEN ...
Ñо, ÑÑо ÑеалÑно пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð·Ð° ÑÑеной, ÑквиваленÑно:
PREPARE имÑ_опеÑаÑоÑа(integer, integer) AS SELECT $1 < $2; и заÑем, ÑÑа подгоÑÐ¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° иÑполнÑеÑÑÑ (EXECUTE) Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ опеÑаÑоÑа IF Ñ ÑекÑÑими знаÑениÑми пеÑеменнÑÑ
PL/pgSQL, пеÑеданнÑÑ
как знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов. ÐбÑÑно ÑÑи деÑали не Ð²Ð°Ð¶Ð½Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑелей PL/pgSQL, но иÑ
полезно знаÑÑ Ð¿Ñи диагноÑÑиÑовании пÑоблем. Ðолее подÑобно об ÑÑом ÑаÑÑказÑваеÑÑÑ Ð² ÐодÑазделе 39.10.2.