![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Оператор 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]А что тебя здесь смущает?
На вид все нормально.
Сам проверял?