Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Continue в процедурах! / 15 сообщений из 15, страница 1 из 1
21.01.2003, 16:32
    #32094162
kas
kas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
Есть ли в SQL, что то вроде "Continue" (как в Дельфях), что бы можно было перейти на следующий элемент цикла For? подскажите, пожалуйста?
...
Рейтинг: 0 / 0
21.01.2003, 17:07
    #32094189
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
Он автоматом переходит без вских доп. фраз
...
Рейтинг: 0 / 0
21.01.2003, 17:19
    #32094198
kas
kas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
нет, я имел ввиду пропустить итерацию и перейти на следующию.
т.е.:
for .... loop
1. ....
if .... then
<Continue >
end if;
2.....
3....
end loop;

Если условие работает, то не выполняя строки 2 и 3 переходит на первую.

Но я так понимаю такое нет. Нужно использовать GOTO и метки.?
...
Рейтинг: 0 / 0
21.01.2003, 19:19
    #32094289
none
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
Вообще иногда задаюсь вопросом - ведь PL/SQL - хорошое и мощное процедурное расширение, ну так почему разработчики туда не добавят действительно необходимые фичи. Сейчас меня напрягает отсутсвие сишного аналога #define, раньше также напрягало отсутствие continue. С континуе я извращаюсь так:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
FOR Index1$ IN  1 .. 100  LOOP
	LOOP
		 /*
		...
		код 1
		...
		*/ 
		
		IF Index1$ >  50  AND ... OR ... THEN
			EXIT;  -- перескок кода 2;
 
		END IF;
		
		 /*
		...
		код 2
		...
		*/ 
		
		EXIT;
	END LOOP;	
END LOOP;


то есть это чтото типа сишного (извините есlи гдето будут баги, давно на си не писал):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
for (index1= 1 ; index1<= 100 ; index1++)
	{
		 /*
		...
		*/ 
		if (index1> 50  && ... || ...) continue;
		 /*
		...
		*/ 
	}
...
Рейтинг: 0 / 0
22.01.2003, 14:29
    #32094639
Alexandr Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
FOR i IN 1..50 LOOP
IF done THEN
GOTO end_loop;
END IF;
...
<<end_loop>>
NULL;
END LOOP;
...
Рейтинг: 0 / 0
22.01.2003, 14:39
    #32094652
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
Да, с continue там облом.
Особенно после программирования на C++, опускаться до goto - это жестоко.
Но альтернативы в pl/sql нету.
...
Рейтинг: 0 / 0
22.01.2003, 14:42
    #32094656
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
А вообше... Что плхово в ентом GOTO?
Все просто помешались на великих идеях ООП. Дурной тон, понимаете...
...
Рейтинг: 0 / 0
22.01.2003, 15:02
    #32094675
Scott Tiger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
Дийкстру почитай.

По мне так, если goto уместен в неком конкретном случае, использовать его не зазорно.
...
Рейтинг: 0 / 0
22.01.2003, 15:17
    #32094684
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
2 Тигра
Согласен на все 100
...
Рейтинг: 0 / 0
22.01.2003, 15:30
    #32094696
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
2 Scott Tiger
А ты, как я понял, с Informix работаеш...
Не подскажешь, есть там какое средство для поиска слов по CLOBам?
...
Рейтинг: 0 / 0
22.01.2003, 15:39
    #32094705
Scott Tiger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
Ух, информикс этот, шоб его... Не знаю, честно говоря, по-моему, там это как дополнительная опция оформлена.
...
Рейтинг: 0 / 0
23.01.2003, 04:29
    #32095000
pauel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
Maybe I missed something, but in general:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
loop
.
.
.
exit when <condition1>;
exit when <condition2>;
exit when <condition3>;
exit when <condition4>;
.
.
.
end loop;


Any condition = true will end loop,
...
Рейтинг: 0 / 0
23.01.2003, 13:31
    #32095196
Alexandr Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
... Any condition = true will end loop,

The man wants to remain in a loop.
...
Рейтинг: 0 / 0
24.01.2003, 01:42
    #32095615
pauel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
To alexandrPlus:

vi konechna bistro nashlis' chto otvetit' ....

Vot iz "Oracle for beginers..."

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
The following loop normally executes ten times, but it will exit prematurely if there are less than ten rows to fetch:

FOR i IN  1 .. 10  LOOP
	FETCH c1 INTO emp_rec;
	EXIT WHEN c1%NOTFOUND;
	total_comm := total_comm + emp_rec.comm;
END LOOP;

The following example illustrates the use of loop labels:

<<outer>>
FOR i IN  1 .. 10  LOOP
	...
	<<inner>>
	FOR j IN  1 .. 100  LOOP
		...
		EXIT outer WHEN ...  -- exits both loops
 
	END LOOP inner;
END LOOP outer;


Or am I still missing somethig?
...
Рейтинг: 0 / 0
24.01.2003, 20:00
    #32096226
Alexandr Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Continue в процедурах!
tak vopros v tom, chto ne bylo continue i ne nado

P.S. Когда ещё придется на волапюке по-писать. :-)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Continue в процедурах! / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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