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

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

Но я так понимаю такое нет. Нужно использовать GOTO и метки.?
...
Рейтинг: 0 / 0
Continue в процедурах!
    #32094289
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще иногда задаюсь вопросом - ведь 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
Continue в процедурах!
    #32094639
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOR i IN 1..50 LOOP
IF done THEN
GOTO end_loop;
END IF;
...
<<end_loop>>
NULL;
END LOOP;
...
Рейтинг: 0 / 0
Continue в процедурах!
    #32094652
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, с continue там облом.
Особенно после программирования на C++, опускаться до goto - это жестоко.
Но альтернативы в pl/sql нету.
...
Рейтинг: 0 / 0
Continue в процедурах!
    #32094656
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообше... Что плхово в ентом GOTO?
Все просто помешались на великих идеях ООП. Дурной тон, понимаете...
...
Рейтинг: 0 / 0
Continue в процедурах!
    #32094675
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дийкстру почитай.

По мне так, если goto уместен в неком конкретном случае, использовать его не зазорно.
...
Рейтинг: 0 / 0
Continue в процедурах!
    #32094684
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Тигра
Согласен на все 100
...
Рейтинг: 0 / 0
Continue в процедурах!
    #32094696
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Scott Tiger
А ты, как я понял, с Informix работаеш...
Не подскажешь, есть там какое средство для поиска слов по CLOBам?
...
Рейтинг: 0 / 0
Continue в процедурах!
    #32094705
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ух, информикс этот, шоб его... Не знаю, честно говоря, по-моему, там это как дополнительная опция оформлена.
...
Рейтинг: 0 / 0
Continue в процедурах!
    #32095000
pauel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Continue в процедурах!
    #32095196
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... Any condition = true will end loop,

The man wants to remain in a loop.
...
Рейтинг: 0 / 0
Continue в процедурах!
    #32095615
pauel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Continue в процедурах!
    #32096226
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tak vopros v tom, chto ne bylo continue i ne nado

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


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