我正在使用 Firebird 2.5 数据库,需要一种方法来计算一个月内的工作日。为了实现这一目标,我想创建一个存储过程:
CREATE PROCEDURE GetWorkingDays (Start_Date DATE, End_Date DATE)
RETURNS (Working_Days INTEGER)
AS
BEGIN
Working_Days = 0;
WHILE (Start_Date <= End_Date) DO
BEGIN
IF ((EXTRACT(WEEKDAY FROM Start_Date) NOT IN (0, 6))) THEN
BEGIN
Working_Days = Working_Days + 1;
END
Start_Date = Start_Date + 1;
END
SUSPEND;
END
不幸的是,我遇到了以下错误,我不知道如何继续。有人可以帮忙吗?非常感谢。
Error: GDS Exception. 335544569. Dynamic SQL Error
SQL error code = -817
Metadata update statement is not allowed by the current database SQL dialect 1
SQLState: 42000
ErrorCode: 335544569
据我在您的错误中可以理解,您在数据库中使用方言 1,并且它已被弃用很长一段时间。
您可以使用此查询检查您的数据库方言
SELECT MON$SQL_DIALECT FROM MON$DATABASE
您可以使用 gfix 实用程序来更改您的方言
gfix -SQL_dialect 3 dynamo -user SYSDBA -password XXX