Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 конструкция if -begin end else  [new]
WНаталья
Member

Откуда: Мурманск
Сообщений: 70
Ну могу понять, как закрыть правильно цикл if-else, если внутри есть еще операторы .

Не компилируется, получаю ошибку Encountered the symbol ';' when expectiong one of the following

На лишние begin и end c одним оператором не смотрите, там будут еще другие вычисления и присваивания. , так что этот блок нужен.

Написано как пример, чтобы разобраться в конструкции.

CREATE OR REPLACE FUNCTION TEST_1234(sn number, l number, g number ) RETURN number is
BEGIN
  if (sn=1) then      

          begin    
             if l<=h then 
               begin
               flag:=1;
               end;

             else
               begin
               flag:=0;
               end;

   end if;

  RETURN flag;
END TEST_1234;
8 июн 21, 22:55    [22333104]     Ответить | Цитировать Сообщить модератору
 Re: конструкция if -begin end else  [new]
Migelle
Member

Откуда:
Сообщений: 234
WНаталья,
CREATE OR REPLACE FUNCTION TEST_1234 (sn NUMBER, l NUMBER, g NUMBER)
    RETURN NUMBER IS
BEGIN
    IF (sn = 1) THEN
        BEGIN
            IF l <= h THEN
                BEGIN
                    flag   := 1;
                END;
            ELSE
                BEGIN
                    flag   := 0;
                END;
            END IF;

            RETURN flag;
        END;
    END IF;
END TEST_1234;
8 июн 21, 23:24    [22333108]     Ответить | Цитировать Сообщить модератору
 Re: конструкция if -begin end else  [new]
Правильный Вася
Member

Откуда:
Сообщений: 444
if - end if --- это один блок
begin - end --- это совсем другой блок
11 июн 21, 02:02    [22334147]     Ответить | Цитировать Сообщить модератору
 Re: конструкция if -begin end else  [new]
Xdredd.vl
Member

Откуда: где-то у Тихого океана
Сообщений: 36
WНаталья,

CREATE OR REPLACE FUNCTION TEST_1234(sn number, l number, g number ) RETURN number is
BEGIN
  if (sn=1) then      
             if l<=h then 
               flag:=1;
               /*тут можно писать много строк, не надо begin-end*/
             else
               flag:=0;
               /*тут можно писать много строк*/
             end if;
  end if;
  RETURN flag;
END TEST_1234;


В коде уважаемого Migelle есть ошибка, найти несложно. (что будет если sn не равно 1)
11 июн 21, 05:30    [22334152]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить