我有一个脚本可以为 Firebird 生成数据库结构并使用 ISQL
由于 date 的类型,我使用的一些语句存在问题TIMESTAMP
,例如外部函数:
DECLARE EXTERNAL FUNCTION F_CUTTIME
TIMESTAMP
RETURNS TIMESTAMP FREE_IT
ENTRY_POINT 'fn_cuttime' MODULE_NAME 'SISUDFIB';
或者例如创建域:
CREATE DOMAIN D_DATE AS TIMESTAMP
CHECK ((VALUE IS NULL) OR (VALUE = F_CUTTIME (VALUE)));
它给了我错误,从我看到的是 type TIMESTAMP
。
当我创建数据库的结构时,我生成了一个脚本,并且在外部函数的声明中出现错误,但只有在我使用 TIMESTAMP 的函数中才告诉我这个错误:
Stament failed, sqlstate = 39000
invalid request BLR offset 13
-function F_CUTTIME is not defined
我进入了 TIMESTAMP 所在的函数,其余的函数很好地生成了我。
如何创建我的脚本,以便在使用 ISQL 的 Firebird 中不会出现错误?
我举个例子:
SET SQL DIALECT 1;
CREATE DATABASE 'C: \ SISCONIBSCT.fdb' PAGE_SIZE 8192
USER 'SISCONIB' PASSWORD 'telecoman'
DEFAULT CHARACTER SET WIN1252;
/ * External Function declarations * /
DECLARE EXTERNAL FUNCTION F_CUTTIME
TIMESTAMP
RETURNS TIMESTAMP FREE_IT
ENTRY_POINT 'fn_cuttime' MODULE_NAME 'SISUDFIB';
/ * Domain definitions * /
CREATE DOMAIN D_BOOLEAN AS CHAR (1)
DEFAULT 'T'
CHECK (VALUE IN ('F', 'T')) NOT NULL;
CREATE DOMAIN D_DATE AS TIMESTAMP
CHECK ((VALUE IS NULL) OR (VALUE = F_CUTTIME (VALUE)));
CREATE DOMAIN D_DATETIME AS TIMESTAMP;
CREATE DOMAIN D_TIME AS TIMESTAMP
CHECK ((VALUE IS NULL) OR (F_CUTTIME (VALUE) = F_TIMEBASE ()));
CREATE TABLE SISFASE
(
CODSCT SMALLINT NOT NULL,
CODEST CHAR (2) NOT NULL,
CODPRO SMALLINT NOT NULL,
CODFAS SMALLINT NOT NULL,
DESCREAS VARCHAR (30) COLLATE PXW_SPAN,
PERESP D_TIME,
CODPLA CHAR (1) NOT NULL,
CODETG SMALLINT NOT NULL,
PRIMARY KEY (CODSCT, CODEST, CODPRO, CODFAS)
);
在外部函数的声明中和域中以及在表的创建中都给出错误,并且总是在日期中给出错误。
不明白问题。