当前数据库SQL方言1不允许元数据更新语句1

问题描述 投票:0回答:1

我正在使用 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
stored-procedures firebird
1个回答
0
投票

据我在您的错误中可以理解,您在数据库中使用方言 1,并且它已被弃用很长一段时间。

您可以使用此查询检查您的数据库方言

SELECT MON$SQL_DIALECT FROM MON$DATABASE 

您可以使用 gfix 实用程序来更改您的方言

gfix -SQL_dialect 3 dynamo -user SYSDBA -password XXX
© www.soinside.com 2019 - 2024. All rights reserved.