August 31, 2008

Параметры по умолчанию для PL функций

Перевод default parameters for PL functions с Pavel Stehule's blog

Привет

Я закончил работу над одной из задач - значения по умолчанию для PL функций. Применение простое - такое же как значений по умолчанию в Firebird 2.x.
postgres=# create or replace function x1(int = 1,int = 2,int= 3)
returns int as $$
select $1+$2+$3;
$$ language sql;
CREATE FUNCTION
postgres=# select x1();
x1
----
6
(1 row)

postgres=# select x1(10);;
x1
----
15
(1 row)

postgres=# select x1(10,20);
x1
----
33
(1 row)

postgres=# select x1(10,20,30);
x1
----
60
(1 row)
Это первый шаг - и менее обсуждаемый. Второй шаг будет сложным - существует два мнения по поводу синтаксиса именованных параметров: вариант a) подобный Oracle синтаксис name => expression и вариант b) собственный синтаксис на основе "AS" expression AS name. Я предпочитаю вариант (a) - думаю это более читабельно (AS в SQL используется для меток). Вариант (b) надёжен с точки зрения совместимости. На pg_hackers было обсуждение без какого-либо заключения. Так что, я надеюсь, по крайней мере значения по умолчанию будут включены в проект.

пока
Pavel

No comments:

Post a Comment