我在postgressql中有这个函数,p_init设置了if分支:
CREATE OR REPLACE FUNCTION dwh.f_dwh_post_dm_updt_vend_cust_serv(p_flg_init varchar DEFAULT 'N')
RETURNS text
LANGUAGE plpgsql
SECURITY DEFINER
AS $function$
DECLARE
proc_step varchar := NULL;
nTemId numeric := NULL;
qta_nobilia numeric := NULL;
vcErrore varchar(4000);
vcStato varchar(10); -- (N)ormale / (W)arning / (E)rrore / (NA) Non Eseguito
idProcedura numeric := 0;
codProcedura varchar(50) := 'POST_DM_UPDT_VEND_CUST_SERV';
v_state TEXT;
v_msg TEXT;
v_detail TEXT;
v_hint TEXT;
v_context TEXT;
ANNOMESE RECORD;
begin
IF(p_flg_init='Y')
then
begin
proc_step := 'LOOP ANNOMESE';
BEGIN
FOR ANNOMESE
IN (
SELECT
mf_id FROM d_tempo WHERE mf_id
BETWEEN To_Char(current_date-1+interval '-24 month','YYYYMM')::integer and To_Char(current_date-1+interval '-1 month','YYYYMM')::integer
-- intervallo rolling 12 mese chiuso
)
LOOP
statement in loop ;
END LOOP;
end;
else
begin
statement that not use lopp ;
end;
end if;
END;
$function$
;
字符集
当我编译代码的错误:SQL错误[42601]:错误:语法错误在或附近“else”位置:5669出现.如果我写的函数没有使用else它工作正常
2条答案
按热度按时间k5hmc34c1#
我已经删除了开始和结束,现在我有不同的错误异常:错误:语法错误或附近的“异常”行281:异常
字符集
ukdjmx9f2#
主要问题是在
ELSE
之前缺少END
关键字。这不是Pascal语言,您不需要在任何地方使用显式块。请先尝试read documentation。您的代码(错误):
字符集
正确版本:
型