我需要使用 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-own 过程,它只给我们 0000 毫秒。我试图将我的程序称为 firebird 程序。此外,我在我的程序中使用和不使用“暂停”进行了测试,但这没有区别。
我还没有找到解决这个问题的方法,所以有人可以在这里帮助我吗?