","处或附近的语法错误
Syntax error at or near ","
我在使用此功能时遇到问题,不知道如何解决。
Create Function Quy(sdate timestamp)
returns integer as $$
declare
numbmonth integer;
quy integer;
Begin
numbmonth := Date_part('month',sdate);
If numbmonth < 4 then
quy := 1;
else if numbmonth < 7 then
quy := 2;
else if numbmonth < 10 then
quy := 3;
else quy := 4;
return quy;
END;
$$
LANGUAGE plpgsql;
当我尝试 运行 代码时会发生这种情况:
ERROR: syntax error at or near ";"
LINE 16: END;
我真的不明白这是怎么回事。
多个语法错误。该函数将像这样工作:
CREATE OR REPLACE FUNCTION quy(sdate timestamp)
RETURNS integer AS
$func$
DECLARE
numbmonth integer := date_part('month', sdate);
quy integer;
BEGIN
IF numbmonth < 4 THEN
quy := 1;
ELSIF numbmonth < 7 THEN
quy := 2;
ELSIF numbmonth < 10 THEN
quy := 3;
ELSE
quy := 4;
END IF;
RETURN quy;
END
$func$ LANGUAGE plpgsql;
Consult the manual for the basic syntax of IF
.
但那是无稽之谈。要获得 季度 ,请在简单表达式中使用字段说明符 QUARTER
和 date_part()
or EXTRACT()
:
EXTRACT(QUARTER FROM $timestamp)
EXTRACT
是 SQL 等同于 date_part()
.
的标准
returns double precision
,因此如果需要,请转换为 integer
(::int
)。
如果您还需要一个功能:
CREATE OR REPLACE FUNCTION quy(sdate timestamp)
RETURNS int LANGUAGE sql IMMUTABLE AS
'SELECT EXTRACT(QUARTER FROM )::int';
</code> 是对第一个函数参数的引用。相当于示例中的 <code>sdate
。 $
-表示法适用于任何版本的 Postgres,而 SQL 函数中的命名参数引用仅在 Postgres 9.2 中引入。参见:
- PLPGSQL Function to Calculate Bearing
dbfiddle here
我在使用此功能时遇到问题,不知道如何解决。
Create Function Quy(sdate timestamp)
returns integer as $$
declare
numbmonth integer;
quy integer;
Begin
numbmonth := Date_part('month',sdate);
If numbmonth < 4 then
quy := 1;
else if numbmonth < 7 then
quy := 2;
else if numbmonth < 10 then
quy := 3;
else quy := 4;
return quy;
END;
$$
LANGUAGE plpgsql;
当我尝试 运行 代码时会发生这种情况:
ERROR: syntax error at or near ";" LINE 16: END;
我真的不明白这是怎么回事。
多个语法错误。该函数将像这样工作:
CREATE OR REPLACE FUNCTION quy(sdate timestamp)
RETURNS integer AS
$func$
DECLARE
numbmonth integer := date_part('month', sdate);
quy integer;
BEGIN
IF numbmonth < 4 THEN
quy := 1;
ELSIF numbmonth < 7 THEN
quy := 2;
ELSIF numbmonth < 10 THEN
quy := 3;
ELSE
quy := 4;
END IF;
RETURN quy;
END
$func$ LANGUAGE plpgsql;
Consult the manual for the basic syntax of IF
.
但那是无稽之谈。要获得 季度 ,请在简单表达式中使用字段说明符 QUARTER
和 date_part()
or EXTRACT()
:
EXTRACT(QUARTER FROM $timestamp)
EXTRACT
是 SQL 等同于 date_part()
.
的标准
returns double precision
,因此如果需要,请转换为 integer
(::int
)。
如果您还需要一个功能:
CREATE OR REPLACE FUNCTION quy(sdate timestamp)
RETURNS int LANGUAGE sql IMMUTABLE AS
'SELECT EXTRACT(QUARTER FROM )::int';
</code> 是对第一个函数参数的引用。相当于示例中的 <code>sdate
。 $
-表示法适用于任何版本的 Postgres,而 SQL 函数中的命名参数引用仅在 Postgres 9.2 中引入。参见:
- PLPGSQL Function to Calculate Bearing
dbfiddle here