powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / if else
7 сообщений из 7, страница 1 из 1
if else
    #39662102
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
function ActionDate(
    aContractId in integer,
    aDate in date,
    aTypeDate in integer default 1
  ) return date
  is
    vResult date;
  begin
    if aTypeDate = 2 then
    (select OperDate into vResult from
    (select a.OperDate
      from BrsActions a
      where a.ContractID = aContractId
        and a.StornDate is Null
        and a.Operdate<aDate
      order by OperDate desc)
      where RowNum = 1;
    return vResult;)

    else aTypeDate = 1 then
    (select BalanceDate into vResult from
    (select o.BalanceDate
      from BrsOpers o
      inner join BrsActions a on (a.actionid = o.actionid)
      where a.ContractID = aContractId
        and a.StornDate is Null
        and o.BalanceDate<aDate
      order by BalanceDate desc)
      where RowNum = 1;
    return vResult;)
    end; 
  exception
    when NO_DATA_FOUND then
      return null;
  end;




При выполнение запроса возникают ошибки


Error: PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:
Error: PLS-00103: Encountered the symbol "RETURN"

Что не так в запросе?
...
Рейтинг: 0 / 0
if else
    #39662103
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы где такого синтаксиса насмотрелись?
elimpion
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
function ActionDate(
    aContractId in integer,
    aDate in date,
    aTypeDate in integer default 1
  ) return date
  is
    vResult date;
  begin
    if aTypeDate = 2 then
    (select OperDate into vResult from
    (select a.OperDate
      from BrsActions a
      where a.ContractID = aContractId
        and a.StornDate is Null
        and a.Operdate<aDate
      order by OperDate desc)
      where RowNum = 1; --???
    return vResult;) --???

    else aTypeDate = 1 then
    (select BalanceDate into vResult from
    (select o.BalanceDate
      from BrsOpers o
      inner join BrsActions a on (a.actionid = o.actionid)
      where a.ContractID = aContractId
        and a.StornDate is Null
        and o.BalanceDate<aDate
      order by BalanceDate desc)
      where RowNum = 1; --???
    return vResult;) --???
    end; 
  exception
    when NO_DATA_FOUND then
      return null;
  end;




При выполнение запроса возникают ошибки


Error: PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:
Error: PLS-00103: Encountered the symbol "RETURN"

Что не так в запросе?
...
Рейтинг: 0 / 0
if else
    #39662104
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

скобки круглые и точки-с-запятой внимательнее расставьте...
...
Рейтинг: 0 / 0
if else
    #39662105
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpionЧто не так в запросе?Используемый язык нужно хоть немного знать, а не фантазировать на лету, изрыгая на форум свой поток сознания.
...
Рейтинг: 0 / 0
if else
    #39662109
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

и с типом условного оператора разберитесь....
если используете if-then-else, то после else должен быть некий выполняемый оператора, а не проверка условия.
если в else нужно проверить дополнительное условие, то форма условного оператора должна быть if-then- ELSIF -then-else...
...
Рейтинг: 0 / 0
if else
    #39662113
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SQL> declare
  2  function ActionDate(
  3      aTypeDate in integer default 1
  4    ) return date
  5    is
  6      vResult date;
  7    begin
  8      if aTypeDate = 2 then
  9         select max(hiredate) into vResult from emp where job='CLERK';
 10      elsif aTypeDate = 1 then
 11         select max(hiredate) into vResult from emp where job='MANAGER';
 12      else
 13        null; --raise или что-там надо
 14      end if;
 15    return vResult;
 16  end ActionDate;
 17  begin
 18   dbms_output.put_line('1 '||ActionDate(1));
 19   dbms_output.put_line('2 '||ActionDate(2));
 20  end;
 21  /
1 09.06.81
2 12.01.83

PL/SQL procedure successfully completed.



.....
stax
...
Рейтинг: 0 / 0
if else
    #39662115
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Аннаelimpion,

и с типом условного оператора разберитесь....
если используете if-then-else, то после else должен быть некий выполняемый оператора, а не проверка условия.
если в else нужно проверить дополнительное условие, то форма условного оператора должна быть if-then- ELSIF -then-else...
спасибо
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / if else
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]