这样不行出现SQL 错误 [42601]: 错误: 语法错误 在 "INT" 或附近的 Position: 46 At Line: 1, Line Position: 46
时间: 2024-02-28 16:52:48 浏览: 206
SQL 错误提示
非常抱歉,我之前的代码有误。Kingbase 数据库中没有 `VARCHAR2` 类型,而是使用 `VARCHAR` 类型。以下是一个修正过的代码示例:
```
CREATE OR REPLACE FUNCTION date_sub (dt DATE, INTERVAL INT, UNIT VARCHAR) RETURN DATE IS
BEGIN
IF UPPER(UNIT) = 'MICROSECOND' THEN
RETURN dt - (INTERVAL / 86400000000);
ELSIF UPPER(UNIT) = 'SECOND' THEN
RETURN dt - (INTERVAL / 86400);
ELSIF UPPER(UNIT) = 'MINUTE' THEN
RETURN dt - (INTERVAL / 1440);
ELSIF UPPER(UNIT) = 'HOUR' THEN
RETURN dt - (INTERVAL / 24);
ELSIF UPPER(UNIT) = 'DAY' THEN
RETURN dt - INTERVAL;
ELSIF UPPER(UNIT) = 'WEEK' THEN
RETURN dt - (INTERVAL * 7);
ELSIF UPPER(UNIT) = 'MONTH' THEN
RETURN ADD_MONTHS(dt, -INTERVAL);
ELSIF UPPER(UNIT) = 'QUARTER' THEN
RETURN ADD_MONTHS(dt, -(INTERVAL * 3));
ELSIF UPPER(UNIT) = 'YEAR' THEN
RETURN ADD_MONTHS(dt, -(INTERVAL * 12));
ELSE
RAISE_APPLICATION_ERROR(-20000, 'Invalid INTERVAL unit: ' || UNIT);
END IF;
END;
/
```
请尝试使用此代码进行创建函数。
阅读全文