Правильное использование временных меток
Листинг 11.10. Правильное использование временных меток
CREATE FUNCTION add_shipment (integer, text) RETURNS timestamp AS '
DECLARE
-- Объявление псевдонимов для аргументов функции,
customerjd ALIAS FOR $1:
isbn ALIAS FOR $2;
-- Объявление переменных для хранения кода поставки и текущего времени.
shipment_1d integer;
rightjiow timestamp;
BEGIN
-- Присвоить переменной текущего времени строку ''now'
right_now := ''now'':
-- Упорядочить существующие поставки по убыванию кодов
-- и присвоить первый код переменной shipment_id.
SELECT INTO shlpmentjd id FROM shipments ORDER BY id DESC:
-- Увеличить переменную shipment_id на 1.
shipment_id := shipment_id + 1:
-- Вставить запись в таблицу shipments.
-- Переменная rightjiow преобразуется к временной пометке на стадии
-- выполнения программы, вследствие чего константное значение now
-- интерпретируется заново при каждом вызове функции.
INSERT INTO shipments VALUES ( shipmentjd. customeMd. isbn. rightjnow ):
-- Вернуть временную пометку, используя константу now.
RETURN rightjiow:
END:
' LANGUAGE 'plpgsql';