Ошибка компиляции, PLS-00103, Обнаружен символ "(", когда ожидалось следующее:; - PullRequest
0 голосов
/ 17 апреля 2019

Я новичок в Oracle SQL Developer и не уверен, что это за язык. У меня есть некоторые проблемы при компиляции. Я действительно почесал голову от этого, и я застрял.

Сообщение, которое я получаю:

"Ошибка (14,9): PLS-00103: Påträffade symbolen" ("då en av följande") förväntades:; Symbolen ";" эрсаттес мед "(" för att kunna fortsätta.

и

Ошибка (14,54): PLS-00103: Påträffade symbolen ")" då en av 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;

1 Ответ

1 голос
/ 17 апреля 2019

Вы пропустили несколько точек с запятой после своих КОНЕЦ.Я также ставлю пробелы после твоего эльсифа.Скомпилировано чисто.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...