powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Хмурый анонимный блок
10 сообщений из 35, страница 2 из 2
Хмурый анонимный блок
    #39922789
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
per,
охватывающий (самого верхнего уровня) блок бегин/енда поставляет вам return неявным образом. это (послабление) -- "синтаксический сахар". а его вы и хотите обойти. поместите его как сабблок внутрь более базового блока. или своими руками делайте return вместо exit из "базового" блока
...
Рейтинг: 0 / 0
Хмурый анонимный блок
    #39922790
per
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Nevsky, проверил - из цикла RETURN выводит.
...
Рейтинг: 0 / 0
Хмурый анонимный блок
    #39922798
Victor Nevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
per, да
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
DO 
$$
<<anonymus_block>>  
BEGIN 
  <<ablock>>
  DECLARE 
	count INT DEFAULT 0;
  BEGIN 
        <<loop1>> 
	LOOP
	  count = count + 1;
	  RAISE NOTICE '%', count;

          --EXIT loop1 WHEN count > 8;
	  IF (count > 9)
	  THEN
	    RETURN;
	  END IF;
	END LOOP loop1;
	
	RAISE NOTICE 'работа продолжается после выхода из цикла';	

        LOOP
		EXIT ablock WHEN count > 999;
		RAISE NOTICE 'сюда не попадаем';
		count = count + 1;
		RAISE NOTICE '%', count;
	END LOOP;

      RAISE NOTICE 'и сюда не попадаем';	
  END ablock; 
END anonymus_block ;
$$ LANGUAGE 'plpgsql'
...
Рейтинг: 0 / 0
Хмурый анонимный блок
    #39922806
per
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Nevsky
per, да
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
DO 
$$
<<anonymus_block>>  
BEGIN 
  <<ablock>>
  DECLARE 
	count INT DEFAULT 0;
  BEGIN 
        <<loop1>> 
	LOOP
	  count = count + 1;
	  RAISE NOTICE '%', count;

          --EXIT loop1 WHEN count > 8;
	  IF (count > 9)
	  THEN
	    RETURN;
	  END IF;
	END LOOP loop1;
	
	RAISE NOTICE 'работа продолжается после выхода из цикла';	

        LOOP
		EXIT ablock WHEN count > 999;
		RAISE NOTICE 'сюда не попадаем';
		count = count + 1;
		RAISE NOTICE '%', count;
	END LOOP;

      RAISE NOTICE 'и сюда не попадаем';	
  END ablock; 
END anonymus_block ;
$$ LANGUAGE 'plpgsql'






Что-то все запустано как-то....

Попробую так:

EXIT убрать совсем.

В каждом действии и внутри каждого цикла проставить проверку условия и RETURN.


блок
действия1
цикл1
действия2
цикл2
действия3
цикл3
...
действияN
циклN
конец блока
...
Рейтинг: 0 / 0
Хмурый анонимный блок
    #39922807
Victor Nevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
per
...
А EXIT не использовать совсем?
нет, зависит от задачи.
...
Рейтинг: 0 / 0
Хмурый анонимный блок
    #39922809
per
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Nevsky
per
...
А EXIT не использовать совсем?
нет, зависит от задачи.


В общем пока так работает:

в каждом действии есть проверка на условие и RETURN
в каждом цикле есть проверка на условие и EXIT

Отрабатывает корректно.

НО по структуре в принципе - непонятно.


Такой вариант нормальный?

Или лучше в цикле EXIT менять на RETURN ?
...
Рейтинг: 0 / 0
Хмурый анонимный блок
    #39922814
Victor Nevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
per

Или лучше в цикле EXIT менять на RETURN ?

откуда я знаю, может завтра у вас появятся циклы/блоки внутри циклов/блоков ... и нужно будет выйти на какой-то уровень ... а я скажу, ДА, ставьте ретурн?
...
Рейтинг: 0 / 0
Хмурый анонимный блок
    #39922825
per
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Nevsky,


Спасибо за помощь! ;-)
...
Рейтинг: 0 / 0
Хмурый анонимный блок
    #39922936
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
per
Victor Nevsky,


Спасибо за помощь! ;-)


ну, о чем вы, не за што
...
Рейтинг: 0 / 0
Хмурый анонимный блок
    #39922956
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то такое хотели?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
DO
$$
BEGIN
  DECLARE
        trig float := 0.85;
        count int := 0;
  BEGIN
        LOOP
          count = count + 1;
          RAISE NOTICE '%', count;
          IF (trig < random())
          THEN
            RAISE NOTICE 'Return из первого цикла.';
            RETURN;
          END IF;
          EXIT WHEN count > 10;
        END LOOP;

        RAISE NOTICE 'Переходим ко второму циклу.';
        count = 0;
        LOOP
          EXIT WHEN count > 10;
          count = count + 1;
          RAISE NOTICE '%', count;
          IF (trig < random())
          THEN
            RAISE NOTICE 'Return из второго цикла.';
            RETURN;
          END IF;

        END LOOP;

  END;
  RAISE NOTICE 'Достигли конца блока.';
END;
$$ LANGUAGE 'plpgsql';
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Хмурый анонимный блок
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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