52.39. pg_proc #
РкаÑалоге pg_proc Ñ
ÑаниÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± обÑÑнÑÑ
ÑÑнкÑиÑÑ
, пÑоÑедÑÑаÑ
, агÑегаÑнÑÑ
и оконнÑÑ
ÑÑнкÑиÑÑ
(в ÑовокÑпноÑÑи Ñакже назÑваемÑÑ
подпÑогÑаммами). Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ CREATE FUNCTION, CREATE PROCEDURE и РазделÑ 36.3.
ÐÑли prokind ÑказÑваеÑ, ÑÑо Ð´Ð°Ð½Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð¾Ð¿Ð¸ÑÑÐ²Ð°ÐµÑ Ð°Ð³ÑегаÑнÑÑ ÑÑнкÑиÑ, в pg_aggregate должна бÑÑÑ ÑооÑвеÑÑÑвÑÑÑÐ°Ñ ÑÑÑока.
ТаблиÑа 52.39. СÑолбÑÑ pg_proc
Тип ÑÑолбÑа ÐпиÑание |
|---|
ÐденÑиÑикаÑÐ¾Ñ ÑÑÑоки |
ÐÐ¼Ñ ÑÑнкÑии |
OID пÑоÑÑÑанÑÑва имÑн, ÑодеÑжаÑего ÑÑÑ ÑÑнкÑÐ¸Ñ |
ÐÐ»Ð°Ð´ÐµÐ»ÐµÑ ÑÑнкÑии |
ЯзÑк ÑеализаÑии или инÑеÑÑÐµÐ¹Ñ Ð²Ñзова Ð´Ð»Ñ ÑÑой ÑÑнкÑии |
ÐÑимеÑÐ½Ð°Ñ ÑÑоимоÑÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ (в единиÑаÑ
cpu_operator_cost); еÑли ÑÑÑановлен пÑизнак |
ÐÑимеÑное ÑиÑло возвÑаÑаемÑÑ
ÑÑÑок (нолÑ, еÑли пÑизнак |
Тип даннÑÑ ÑлеменÑов пеÑеменного маÑÑива паÑамеÑÑов, либо 0, еÑли ÑÑнкÑÐ¸Ñ Ð½Ðµ пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿ÐµÑеменное ÑиÑло паÑамеÑÑов |
ÐÑпомогаÑелÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑÑнкÑии (Ñм. Раздел 36.11) или нолÑ, еÑли ÐµÑ Ð½ÐµÑ |
|
ФÑнкÑÐ¸Ñ Ð¾Ð¿ÑеделÑÐµÑ ÐºÐ¾Ð½ÑекÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи (Ñ. е. ÑÑо ÑÑнкÑÐ¸Ñ Â«setuid») |
ФÑнкÑÐ¸Ñ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ð±Ð¾ÑнÑÑ ÑÑÑекÑов. ÐÐ¸ÐºÐ°ÐºÐ°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÐµÑ Ð°ÑгÑменÑÐ°Ñ Ð½Ðµ вÑдаÑÑÑÑ, кÑоме как ÑеÑез возвÑаÑаемое знаÑение. ÐÑÐ±Ð°Ñ ÑÑнкÑиÑ, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²ÑдаÑÑ Ð¾ÑибкÑ, в завиÑимоÑÑи Ð¾Ñ Ð·Ð½Ð°Ñений аÑгÑменÑов, не ÑвлÑеÑÑÑ Ð³ÐµÑмеÑиÑной. |
ФÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ NULL, еÑли лÑбой из аÑгÑменÑов пÑи вÑзове NULL. Ð ÑÑом ÑлÑÑае ÑÑнкÑÐ¸Ñ ÑакÑиÑеÑки не бÑÐ´ÐµÑ Ð²ÑзÑваÑÑÑÑ Ð²Ð¾Ð²Ñе. ФÑнкÑии, не ÑвлÑÑÑиеÑÑ Â«ÑÑÑогими», Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð³Ð¾ÑÐ¾Ð²Ñ Ð¿ÑинÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ NULL. |
ФÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво (Ñ. е. множеÑÑво знаÑений Ñказанного Ñипа даннÑÑ ) |
СвойÑÑво |
СвойÑÑво |
ЧиÑло Ð²Ñ Ð¾Ð´Ð½ÑÑ Ð°ÑгÑменÑов |
ЧиÑло аÑгÑменÑов, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ |
Тип даннÑÑ Ð²Ð¾Ð·Ð²ÑаÑаемого знаÑÐµÐ½Ð¸Ñ |
ÐаÑÑив Ñипов аÑгÑменÑов ÑÑнкÑии. РнÑм ÑÑиÑÑваÑÑÑÑ ÑолÑко вÑ
однÑе аÑгÑменÑÑ ÑÑнкÑии (вклÑÑÐ°Ñ Ð°ÑгÑменÑÑ |
ÐаÑÑив Ñипов аÑгÑменÑов ÑÑнкÑии. РнÑм ÑÑиÑÑваÑÑÑÑ Ð²Ñе аÑгÑменÑÑ (вклÑÑÐ°Ñ Ð°ÑгÑменÑÑ |
ÐаÑÑив Ñежимов аÑгÑменÑов ÑÑнкÑий, закодиÑованнÑÑ
как |
ÐаÑÑив имÑн аÑгÑменÑов ÑÑнкÑии. ÐÐ»Ñ Ð°ÑгÑменÑов без имени в ÑÑом маÑÑиве задаÑÑÑÑ Ð¿ÑÑÑÑе ÑÑÑоки. ÐÑли вÑе аÑгÑменÑÑ ÑÑнкÑии безÑмÑннÑе, ÑÑо поле Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ NULL. ÐамеÑÑÑе, ÑÑо позиÑии в ÑÑом маÑÑиве ÑооÑвеÑÑÑвÑÑÑ Ð¿Ð¾Ð·Ð¸ÑиÑм в |
ÐеÑевÑÑ Ð²ÑÑажений (в пÑедÑÑавлении |
ÐаÑÑив Ñипов аÑгÑменÑов/ÑезÑлÑÑаÑов, к коÑоÑÑм Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑименÑÑÑÑÑ ÑÑанÑÑоÑмаÑии (заданнÑе в пÑедложении |
ÐÑо знаÑение говоÑÐ¸Ñ Ð¾Ð±ÑабоÑÑÐ¸ÐºÑ ÑÑнкÑии, как вÑзÑваÑÑ Ð´Ð°Ð½Ð½ÑÑ ÑÑнкÑиÑ. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑобÑÑвенно иÑÑ Ð¾Ð´Ð½Ñй код ÑÑнкÑии Ð´Ð»Ñ Ð¸Ð½ÑеÑпÑеÑиÑÑемÑÑ ÑзÑков, обÑекÑнÑй Ñимвол, Ð¸Ð¼Ñ Ñайла или ÑÑо-Ñо дÑÑгое, в завиÑимоÑÑи Ð¾Ñ ÑзÑка ÑеализаÑии/ÑоглаÑÐµÐ½Ð¸Ñ Ð¾ вÑÐ·Ð¾Ð²Ð°Ñ . |
ÐополниÑелÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ Ñом, как вÑзÑваÑÑ ÑÑнкÑиÑ. ÐнÑеÑпÑеÑаÑÐ¸Ñ ÑÑого знаÑÐµÐ½Ð¸Ñ Ñак же завиÑÐ¸Ñ Ð¾Ñ ÑзÑка. |
ÐÑедваÑиÑелÑно ÑазобÑанное Ñело SQL-ÑÑнкÑии. ÐÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÑÑнкÑий на ÑзÑке SQL, когда Ñело ÑÑнкÑии оÑоÑмлено по ÑÑандаÑÑÑ SQL, а не в виде ÑÑÑоки. РдÑÑÐ³Ð¸Ñ ÑлÑÑаÑÑ â NULL. |
ÐокалÑнÑе пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑионнÑÑ Ð¿ÐµÑеменнÑÑ Ð²Ñемени вÑполнениÑ, дейÑÑвÑÑÑие в ÑÐ°Ð¼ÐºÐ°Ñ ÑÑнкÑии |
ÐÑава доÑÑÑпа; за подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº РазделÑ 5.8. |
ÐÐ»Ñ ÑкомпилиÑованнÑÑ
ÑÑнкÑий, как вÑÑÑоеннÑÑ
, Ñак и динамиÑеÑки загÑÑжаемÑÑ
, поле prosrc ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼Ñ ÑÑнкÑии на ÑзÑке C (обÑекÑнÑй Ñимвол). ÐÐ»Ñ ÑÑнкÑий на ÑзÑке SQL: еÑли ÑÑнкÑÐ¸Ñ Ð¾Ð¿Ñеделена в виде ÑÑÑоки, поле prosrc ÑодеÑÐ¶Ð¸Ñ Ð¸ÑÑ
однÑй код ÑÑнкÑии; еÑли же ÑÑнкÑÐ¸Ñ Ð¾ÑоÑмлена по ÑÑандаÑÑÑ SQL, поле prosrc не иÑполÑзÑеÑÑÑ (обÑÑно ÑÑо пÑÑÑÐ°Ñ ÑÑÑока), а поле prosqlbody ÑодеÑÐ¶Ð¸Ñ Ð¿ÑедваÑиÑелÑно ÑазобÑанное опÑеделение ÑÑнкÑии. ÐÐ»Ñ Ð²ÑеÑ
дÑÑгиÑ
извеÑÑнÑÑ
ÑÐµÐ³Ð¾Ð´Ð½Ñ ÑзÑков поле prosrc ÑодеÑÐ¶Ð¸Ñ Ð¸ÑÑ
однÑй код ÑÑнкÑии. Ðоле probin иÑполÑзÑеÑÑÑ ÑолÑко Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑки загÑÑжаемÑÑ
ÑÑнкÑий на C, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ
оно задаÑÑ Ð¸Ð¼Ñ ÑазделÑемой библиоÑеки, ÑодеÑжаÑей ÑÑи ÑÑнкÑии.