Для одного из проектов понадобилось получать 1 день месяца из любой переданой в функцию даты. До начала использования Firebird 2.1 даная проблема решалась использованием udf из библиотеки rfunc.
В версию Firebird 2.1 подключить бибилиотеку не получилось (правда не сильно то и старался), и было решено решить проблемму штатными средствами так как при использовании внешних бибилиотек обслуживающий персонал при переустановки системы постоянно забывал их возвращать на место. Так как в запросах данную функцию вызывать было не нужно а использовалась она только в хранимых процедурах, то напрашивалось сделать данную функцию в виде хранимой процедуры на PSQL. Решение конечно не самое красивое но оно выполняет поставленые задачи. Собственно код процедуры :create or alter procedure LFIRSTDAY (
PDATE date)
returns (
FIRSTDATE date)
as
declare variable MT smallint;
declare variable YR integer;
declare variable S varchar(10);
begin
/* Procedure Text */
mt=extract(month from :pdate);
yr=extract(year from :pdate);
s='01.'||cast(mt as varchar(2))||'.'||cast(yr as varchar(4));
firstdate=cast(s as date);
suspend;
end^
SET TERM ; ^
Комментариев нет:
Отправить комментарий