powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Аналог try cath ?
11 сообщений из 11, страница 1 из 1
Аналог try cath ?
    #39120090
YurikGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли в PostgreSQL аналог try cath ?

Типа такого: https://technet.microsoft.com/ru-ru/library/ms179296(v=sql.105).aspx
...
Рейтинг: 0 / 0
Аналог try cath ?
    #39120096
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Аналог try cath ?
    #39120102
YurikGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trotYurikGL,

Один из вариантов
http://www.postgresql.org/docs/9.3/interactive/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING

Мне "покусочечно" нужно, а не всю функцию целиком.
Возникла ошибка в цикле - записали в лог-таблицу и дальше цикл продолжаться должен.
...
Рейтинг: 0 / 0
Аналог try cath ?
    #39120112
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YurikGLВозникла ошибка в цикле - записали в лог-таблицу и дальше цикл продолжаться должен.
Смотри далее в качестве примера
Example 40-2. Exceptions with UPDATE/INSERT
...
Рейтинг: 0 / 0
Аналог try cath ?
    #39121320
YurikGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trot,

Exception ставится только после return. Мне до надо.

Функция вообще ничего не возвращает, а лишь конвертирует данные.
...
Рейтинг: 0 / 0
Аналог try cath ?
    #39121380
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторException ставится только после return.

чито ?111111адынадын

лавровы, ять.
...
Рейтинг: 0 / 0
Аналог try cath ?
    #39122323
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YurikGL,

Вызвать функцию 1, из которой вызовутся подфункции 1-1 и 1-2 (в каждой из которых лежит begin ... EXCEPTION WHEN ..._
не позволяет, разумеется, религия.
Имя которой "яхочукакяхочуавывсеговнокодеры"
...
Рейтинг: 0 / 0
Аналог try cath ?
    #39122364
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HawkmoonYurikGL,

Вызвать функцию 1, из которой вызовутся подфункции 1-1 и 1-2 (в каждой из которых лежит begin ... EXCEPTION WHEN ..._
<>
а зачем ? можно же сколь угодно, в т.ч. вложенно, в т.ч. и в цыкле цыкать


test
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
DO
language plpgsql
$xxxxxxxx$
DECLARE
BEGIN
	FOR i IN 1..100 LOOP
		BEGIN -- savepoint
			--do something
			RAISE NOTICE ' % , %' ,1/(i%17) , i;			
		EXCEPTION WHEN others THEN
			-- do except
			raise notice 'не шмогла %', i;
		END;
	END LOOP;
END;
$xxxxxxxx$

...
Рейтинг: 0 / 0
Аналог try cath ?
    #39122579
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

я в свое время пришло к выводу (уж не помню почему), чито exception when может быть один на функцию.
И вот как и аффтар ломало себе голову и пришло к этому варианту.
...
Рейтинг: 0 / 0
Аналог try cath ?
    #39123748
YurikGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hawkmoonqwwq,

я в свое время пришло к выводу (уж не помню почему), чито exception when может быть один на функцию.
И вот как и аффтар ломало себе голову и пришло к этому варианту.
По ощущениям exception допускается только после return. Даже после return next идет ошибка.

Правильно я понимаю, что если мне нужно сделать функционал вида

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
FOR r IN
        SELECT * FROM t1
    LOOP
	try
		insert into t2 (t2.p1,t2.p2) values (r.p1,r.p2) -- триггер поддержки целостности или ключ может вызвать exception
	catch 
        	-- ничего не произошло
	end;

    END LOOP;
    RETURN 1;



То мне нужно insert into t2 (t2.p1,t2.p2) values (r.p1,r.p2) обернуть в отдельную функцию?
И это является наиболее корректным способом?
...
Рейтинг: 0 / 0
Аналог try cath ?
    #39123760
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YurikGLПо ощущениям exception допускается только после return. Даже после return next идет ошибка.

Правильно я понимаю, что если мне нужно сделать функционал вида

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
FOR r IN
        SELECT * FROM t1
    LOOP
	begin
		do 1;
		......
		do n;
		insert into t2 (t2.p1,t2.p2) values (r.p1,r.p2) -- триггер поддержки целостности или ключ может вызвать exception
	exception when .....
	then 
        	-- ничего не произошло ОТ begin ДО exception
	end;[/i]

    END LOOP;
    RETURN 1;



То мне нужно insert into t2 (t2.p1,t2.p2) values (r.p1,r.p2) обернуть в отдельную функцию?
И это является наиболее корректным способом?
неправильно


exception является элементом блока begin [<<savepoint>>] -> exception when e1 when e2 ..... ->end;
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Аналог try cath ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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