Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];
ВнизОператор 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c