我是Oracle SQL Developer的新手,我不确定语言是什么。 编译时出现一些问题。我真的在这上面挠了一下头,被困住了。
收到的消息是:
“错误(14,9):PLS-00103:Påträffade符号为”(“” 意见:;标记“;” ersattes med“(” att kunnafortsätta。
和
错误(14,54):PLS-00103:Påträffade符号为“)”,则为följande 意见:*&-+ / den mod rest rem och或 作为||多集”
翻译为:
“错误(14,9):PLS-00103:在预期以下情况之一时遇到了符号“(”:;用符号“;”代替“(”以继续。
和
错误(14,54):PLS-00103:在预期以下*&-+ / den mod rest rem和或为||时遇到符号“)”多集”
代码是从.txt文件中复制的,而令我震惊的是,可能存在一些非法的白色字符,但我找不到任何白色字符。
create or replace FUNCTION FISKEBY_PS_CALC_PEDKAT(std_ in varchar2, mediafas_ in varchar2, fluidgrupp_ in varchar2, konstruktionstemp_ in varchar2, tryck_ in varchar2, DN_ in varchar2) return varchar2 is
BEGIN
if (mediafas_='STABIL GAS' and fluidgrupp_='1') then
BEGIN
if(tryck_<0.5) then RETURN 'Ingen klass';
elsif (DN_<25 and tryck_>=0.5) then RETURN 'Klass 0';
elsif (DN_<100 and DN_>=25 and tryck_*DN_<1000) then RETURN 'Klass I';
elsif((DN_<350 and DN_>=100 and tryck_<10) or (DN_<350 and DN_>=25 and tryck_*DN_<3500 and tryck_*DN_>=1000)or(DN_<100 and DN_>=25 and tryck_*DN_>1000)) then RETURN 'Klass II';
elsif(DN_>=350 or (tryck_*DN_>=3500 and DN_>=100)) then RETURN 'Klass III';
else RETURN '';
end if;
END
elsif (mediafas_='INSTABIL GAS' and fluidgrupp_='1') then
BEGIN
if(tryck_<0.5) then RETURN 'Ingen klass';
elsif(DN_<25 and tryck_>=0.5) then RETURN 'Klass 0';
elsif(DN_>=25 and tryck_>=0.5) then RETURN 'Klass III';
else RETURN '';
end if;
END
elsif(mediafas_='STABIL GAS' and fluidgrupp_='2') then
BEGIN
if(tryck_<0.5) then RETURN 'Ingen klass';
elsif(DN_<32 or DN_*tryck_<1000) then RETURN 'Klass 0';
elsif(DN_<100 or DN_*tryck_<3500) then RETURN 'Klass I';
elsif((DN_<250 or DN_*tryck_<5000) and konstruktionstemp_<350) then RETURN 'Klass II';
elsif((DN_>=250 or DN_*tryck_>=5000) or (DN_<250 or DN_*tryck_<5000) and konstruktionstemp_>=350) then RETURN 'Klass III';
else RETURN '';
end if;
END
elsif(mediafas_='VÄTSKA' and fluidgrupp_='1') then
BEGIN
if(tryck_<0.5) then RETURN 'Ingen klass';
elsif(DN_<25 or DN_*tryck_<2000) then RETURN 'Klass 0';
elsif(DN_>=25 and DN_*tryck_>=2000 and tryck_>=0.5 and tryck_<10) then RETURN 'Klass I';
elsif(DN_>=25 and DN_*tryck_>=2000 and tryck_>=10 and tryck_<500) then RETURN 'Klass II';
elsif(DN_>=25 and DN_*tryck_>=2000 and tryck_>=500) then RETURN 'Klass III';
else RETURN '';
end if;
END
elsif(mediafas_='VÄTSKA' and fluidgrupp_='2') then
BEGIN
if(tryck_<0.5) then RETURN 'Ingen klass';
elsif(DN_<200 or DN_*tryck_<5000 or tryck_<10) then RETURN 'Klass 0';
elsif(DN_>=200 and DN_*tryck_>=5000 and tryck_>10 and tryck_<500) then RETURN 'Klass I';
elsif(DN_>=200 and DN_*tryck_>=5000 and tryck_>=500) then RETURN 'Klass II';
else RETURN '';
end if;
END
else RETURN '';
end if;
END FISKEBY_PS_CALC_PEDKAT;
答案 0 :(得分:1)
结束END后,您缺少了一些分号。我还在您的elsif后面加了空格。编译干净。
create or replace FUNCTION FISKEBY_PS_CALC_PEDKAT(std_ in varchar2, mediafas_ in varchar2, fluidgrupp_ in varchar2, konstruktionstemp_ in varchar2, tryck_ in varchar2, DN_ in varchar2) return varchar2 is
BEGIN
if (mediafas_='STABIL GAS' and fluidgrupp_='1') then
BEGIN
if(tryck_<0.5) then RETURN 'Ingen klass';
elsif (DN_<25 and tryck_>=0.5) then RETURN 'Klass 0';
elsif (DN_<100 and DN_>=25 and tryck_*DN_<1000) then RETURN 'Klass I';
elsif((DN_<350 and DN_>=100 and tryck_<10) or (DN_<350 and DN_>=25 and tryck_*DN_<3500 and tryck_*DN_>=1000)or(DN_<100 and DN_>=25 and tryck_*DN_>1000)) then RETURN 'Klass II';
elsif(DN_>=350 or (tryck_*DN_>=3500 and DN_>=100)) then RETURN 'Klass III';
else RETURN '';
end if;
END;
elsif (mediafas_='INSTABIL GAS' and fluidgrupp_='1') then
BEGIN
if(tryck_<0.5) then RETURN 'Ingen klass';
elsif(DN_<25 and tryck_>=0.5) then RETURN 'Klass 0';
elsif(DN_>=25 and tryck_>=0.5) then RETURN 'Klass III';
else RETURN '';
end if;
END;
elsif (mediafas_='STABIL GAS' and fluidgrupp_='2') then
BEGIN
if(tryck_<0.5) then RETURN 'Ingen klass';
elsif(DN_<32 or DN_*tryck_<1000) then RETURN 'Klass 0';
elsif(DN_<100 or DN_*tryck_<3500) then RETURN 'Klass I';
elsif((DN_<250 or DN_*tryck_<5000) and konstruktionstemp_<350) then RETURN 'Klass II';
elsif((DN_>=250 or DN_*tryck_>=5000) or (DN_<250 or DN_*tryck_<5000) and konstruktionstemp_>=350) then RETURN 'Klass III';
else RETURN '';
end if;
END;
elsif (mediafas_='VDTSKA' and fluidgrupp_='1') then
BEGIN
if(tryck_<0.5) then RETURN 'Ingen klass';
elsif(DN_<25 or DN_*tryck_<2000) then RETURN 'Klass 0';
elsif(DN_>=25 and DN_*tryck_>=2000 and tryck_>=0.5 and tryck_<10) then RETURN 'Klass I';
elsif(DN_>=25 and DN_*tryck_>=2000 and tryck_>=10 and tryck_<500) then RETURN 'Klass II';
elsif(DN_>=25 and DN_*tryck_>=2000 and tryck_>=500) then RETURN 'Klass III';
else RETURN '';
end if;
END;
elsif (mediafas_='VDTSKA' and fluidgrupp_='2') then
BEGIN
if(tryck_<0.5) then RETURN 'Ingen klass';
elsif(DN_<200 or DN_*tryck_<5000 or tryck_<10) then RETURN 'Klass 0';
elsif(DN_>=200 and DN_*tryck_>=5000 and tryck_>10 and tryck_<500) then RETURN 'Klass I';
elsif(DN_>=200 and DN_*tryck_>=5000 and tryck_>=500) then RETURN 'Klass II';
else RETURN '';
end if;
END;
else RETURN '';
end if;
END FISKEBY_PS_CALC_PEDKAT;