Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Оператор BREAK в IB [D5, IB6.x]


stkatch ©   (2003-05-28 11:19:00) 

Привет, Мастера!
Не подскажете, если в IB в хранимых процедурах оператор типа BREAK или как реализовать следущую конструкцию

FOR
SELECT ...
DO
BEGIN
IF (Filed1 <> SMTH) THEN
BREAK; --???
-- DO SMTH
END


DarkGreen   (2003-05-28 14:11:00) [1]

2 stkatch (28.05.03 13:55)
Я так и не понял, что мешает поставить FireBird 1.0, клон IB, к тому же бесплатный вместо IB 6.x?


AlexSerp   (2003-05-28 14:05:00) [2]

Повторю.
Хотя можно вызвать эту процедуру из другой, в которой и прописать те действия, которые ты хочешь сделать после прервания в этой процедуре.

И здесь можно обойтись EXIT без исключений.
Т.к. при исключении появляется окно с предупреждением/ошибкой,
а по EXIT ты просто выходишь из процедуры, не пугаю юзера.


stkatch   (2003-05-28 13:55:00) [3]

К сожалению не только религиозные и не только предрассудки. На самом деле проблема решается при помощи исключений и их обработке. Спасибо всем!


DarkGreen   (2003-05-28 13:37:00) [4]

Ну а кто тебе мешает поставить FB? Или только из религиозных предрассудков?


stkatch   (2003-05-28 13:13:00) [5]

> DarkGreen
У меня не FB, поэтому и спрашиваю. А в IB выборка первой записи очень усложняет запрос, хотя конечно это возможно. Но с помощью BREAK это было бы сделать логичнее


DarkGreen   (2003-05-28 12:55:00) [6]

stkatch (28.05.03 12:11)
Чем проблематично? В FB, ИМХО, есть конструкция FIRST n. Вот и выбирай FIRST 1.


Alexandr   (2003-05-28 12:32:00) [7]

нету break


stkatch   (2003-05-28 12:11:00) [8]

Мне надо выбрать только первую запсиь из результата, возвращаемого запросом. Написать запрос, чтобы он возвращал только одну запись представляется довольно проблематичным :-(


AlexSerp   (2003-05-28 12:02:00) [9]

Ну что я могу на это сказать.
Сделай запрос такой, чтобы ты получил ТОЛЬКО интересующие тебя данные, чтобы не было таких моментов, который ты описал.
Ведь это более логично.
А прервать цикл как в Делфях в ИнтерБасе не выйдет.

Хотя можно вызвать эту процедуру из другой, в которой и прописать те действия, которые ты хочешь сделать после прервания в этой процедуре.
Ясно сказал? Если нет, задавай еще вопросы.


stkatch   (2003-05-28 11:50:00) [10]

> AlexSerp
BEGIN
FOR
SELECT ...
DO
BEGIN
IF (Filed1 <> SMTH) THEN
BREAK; --???
-- DO SMTH
END
OPERATOR1;
END

Я хочу если выполняется условие выйти из цикла FOR и перейти к выполнению OPERATOR1


AlexSerp   (2003-05-28 11:44:00) [11]

Да, из всей.
А ты хочешь на след.запись встать?
Ну дык, и сделай все через IFы.
Объяснил бы поконкретнее.


stkatch   (2003-05-28 11:38:00) [12]

А если у меня процедура следущего типа:
BEGIN
FOR
SELECT ...
DO
BEGIN
IF (Filed1 <> SMTH) THEN
BREAK; --???
-- DO SMTH
END
-- DO SMTH
END
Если вставить EXIT то приведет к выходу из ВСЕЙ процедуры, разве нет?


Johnmen   (2003-05-28 11:36:00) [13]

EXCEPTION MYEXCEPTION777;
Приводит к прекращению выполнения ХП, триггера.


AlexSerp   (2003-05-28 11:35:00) [14]

Что-то я стормозил.
Надо EXIT вместо BREAK написать.


stkatch   (2003-05-28 11:30:00) [15]

У меня ругается на BREAK. У меня IB 6.01


AlexSerp   (2003-05-28 11:26:00) [16]

А что тебя здесь смущает?
На вид все нормально.
Сам проверял?


Наверх

Титульная страница Поиск, карта сайта Написать письмо