Мне нужно использовать возвращаемое значение из хранимой процедуры в firebird 3.0 в качестве значения по умолчанию в нескольких столбцах.
Моя процедура:
CREATE OR ALTER PROCEDURE CURRENTTIME
returns (
stime char(12))
as
begin
sTime = (SELECT trim(Substring(CURRENT_TIMESTAMP FROM 12 FOR 12)) from RDB$
end
Итак, мы должны заполнить текущее время в некоторых конкретных столбцах с именами «NewOn» и «LastChangeOn». Я нашел процедуру по умолчанию от самой firebird под названием Current_Time, но миллисекунды всегда равны «0000», например. «12:30:10.0000». Плохо, что нам нужны миллисекунды в нашей базе данных. Моя собственная процедура дает нам миллисекунды, но мы не можем использовать ее в нашей таблице.
Пример таблицы:
CREATE TABLE USER (
FIRSTNAME CHAR(30),
LASTNAME CHAR(50),
IDENT CHAR(40) NOT NULL,
NEWAT DATE DEFAULT Current_Date NOT NULL,
NEWON CHAR(13) DEFAULT Current_Time(3) NOT NULL,
NEWFROM CHAR(25),
LASTCHANGEAT DATE DEFAULT Current_Date NOT NULL,
LASTCHANGEON CHAR(13) DEFAULT Current_Time(3) NOT NULL,
LASTCHANGEFROM CHAR(25)
);
Когда таблица создается таким образом, она вызывает собственную процедуру firebird, которая дает нам только 0000 миллисекунд. Я попытался назвать свою процедуру как процедуру firebird. Также я тестировал его с «приостановкой» и без нее в своей процедуре, но это не имеет значения.
Я еще не нашел решения этой проблемы, так что может ли кто-нибудь помочь мне здесь?
LASTCHANGEON
не является столбцом метки времени, если вам нужна дата и время - person a_horse_with_no_name   schedule 01.02.2017