Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.19;
Скачать: CL | DM;

Вниз

Оператор BREAK в IB   Найти похожие ветки 

 
stkatch   (2003-05-28 11:19) [0]

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

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


 
AlexSerp ©   (2003-05-28 11:26) [1]

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


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

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


 
AlexSerp ©   (2003-05-28 11:35) [3]

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


 
Johnmen ©   (2003-05-28 11:36) [4]

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


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

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


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

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


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

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

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


 
AlexSerp ©   (2003-05-28 12:02) [8]

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

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


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

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


 
Alexandr ©   (2003-05-28 12:32) [10]

нету break


 
DarkGreen ©   (2003-05-28 12:55) [11]

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


 
stkatch   (2003-05-28 13:13) [12]

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


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

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


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

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


 
AlexSerp ©   (2003-05-28 14:05) [15]

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

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


 
DarkGreen ©   (2003-05-28 14:11) [16]

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



Страницы: 1 вся ветка

Текущий архив: 2003.06.19;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.036 c
6-60299
Zheka
2003-04-18 12:01
2003.06.19
Передача данных с досовской машины на Виндовозную


3-60049
Disruptor
2003-05-24 09:11
2003.06.19
Работа с датами. Операции.


1-60115
Тфьу
2003-06-05 11:37
2003.06.19
Как передать параметр в LineDDA функцию?


3-60032
vvvvv
2003-05-27 16:26
2003.06.19
Можно-ли через ADO упаковать *.mdb ?


1-60150
Zew
2003-06-04 18:19
2003.06.19
через определённое время прибавлять число