Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / оператор if в процедуре...Parsing Error / 10 сообщений из 10, страница 1 из 1
10.07.2018, 14:46
    #39672113
SlavikArhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
оператор if в процедуре...Parsing Error
Доброго дня! Дописываю хранимую процедуру...У процедуры куча выходных параметров, один из которых мне важен, это тип сервиса...До внесения моих правок, процедура абсолютно рабочая...выводит заданные выходные параметры...один из этих параметров мне интересен, это servicetypename...IBExpert все что то ругается, может подчеркивает vpisano=''; Parsing Error...может по синтаксису что то не то?...суть в чем, в зависимости от типа сервиса, в выходную переменную записывается определенное значение...выходную переменную определил, тип varchar

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
vpisano='';
      if (:servicetypename='Цифровое ТВ') then begin
      into :vpisano='text1';
      end

      if (:servicetypename='СКТВ') then  begin
      into :vpisano='text2';

      if (:servicetypename='ТАКП') then  begin
      into :vpisano='text3';
      end

      if (:servicetypename='Интернет') then  begin
      into :vpisano='text4';
      end

      if (:servicetypename='Интернет') then  begin
      into :vpisano='text5';
      end
...
Рейтинг: 0 / 0
10.07.2018, 14:58
    #39672119
AltHasp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
оператор if в процедуре...Parsing Error
SlavikArhan,

1) уберите into везде где хотите присвоить значение переменной;
2) для однострочных if не нужен begin...end;
3) лучше будет если видеть весь техт ХП, а то гадать приходится.

Удачи !
...
Рейтинг: 0 / 0
10.07.2018, 14:59
    #39672120
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
оператор if в процедуре...Parsing Error
SlavikArhan,

ну и где ты такой синтаксис нашёл? Читай https://www.firebirdsql.org/file/documentation/reference_manuals/firebird-language-reference-30-rus.pdf
...
Рейтинг: 0 / 0
10.07.2018, 15:02
    #39672122
AltHasp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
оператор if в процедуре...Parsing Error
SlavikArhan,

как то так наверное:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
begin
vpisano='';
      if (:servicetypename='Цифровое ТВ') then  vpisano='text1';
      if (:servicetypename='СКТВ')             then  vpisano='text2';
      if (:servicetypename='ТАКП')             then  vpisano='text3';
      if (:servicetypename='Интернет')       then  vpisano='text4';
      if (:servicetypename='Интернет')       then  vpisano='text5';

end



Ксати четвёртый и пятый пункт дублируется, так не должно быть.
...
Рейтинг: 0 / 0
10.07.2018, 15:06
    #39672125
AltHasp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
оператор if в процедуре...Parsing Error
SlavikArhan,

вместо строкового параметра :servicetypename обычно используют её индекс (цифры).

И получше будет, если хотя бы так:

Код: plsql
1.
2.
3.
4.
5.
6.
begin

select first 1 field1 from table1 where serv_name= :servicetypename into :vpisano;

  suspend;
end
...
Рейтинг: 0 / 0
10.07.2018, 15:32
    #39672138
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
оператор if в процедуре...Parsing Error
AltHaspвместо строкового параметра :servicetypename обычно используют её индекс (цифры).
что-что?
AltHaspИ получше будет, если хотя бы так:
так будет хуже, и в контексте вопроса вообще бред. Где вы там таблицу увидели?
...
Рейтинг: 0 / 0
10.07.2018, 15:38
    #39672140
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
оператор if в процедуре...Parsing Error
Я буду краток:

Код: plsql
1.
vpisano = :servicetypename;



И больше ничего не нужно :)
...
Рейтинг: 0 / 0
11.07.2018, 03:56
    #39672330
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
оператор if в процедуре...Parsing Error
Еще вариант
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
execute block
returns (
  vpisano varchar(20)
)
as
declare variable serticetypename varchar(20);
begin
  serticetypename = 'СКТВ';
  --
  vpisano = case serticetypename
    when 'Цифровое ТВ'   then 'text1'
    when 'СКТВ'          then 'text2'
    when 'ТАКП'          then 'text3'
    else ''
  end;
  --
  suspend;
end
...
Рейтинг: 0 / 0
11.07.2018, 12:05
    #39672469
SlavikArhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
оператор if в процедуре...Parsing Error
Господа, спасибо большое! Прикрутил код у процедуре...
...
Рейтинг: 0 / 0
12.07.2018, 09:44
    #39672899
SlavikArhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
оператор if в процедуре...Parsing Error
fraks, благодарю, все таки Вашу реализацию взял за основу в ХП
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / оператор if в процедуре...Parsing Error / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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