Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как получить результат выполнения EXECUTE / 8 сообщений из 8, страница 1 из 1
17.03.2008, 10:37
    #35194338
СироП
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить результат выполнения EXECUTE
Хочу получать от функции результат ее выполнения допусти 1 если ок или 2 если нет.

Может я что то недопонимаю, как мне точно быть уверенным что все
Код: plaintext
execute
внутри функции отработали нормально.

Cпасибо.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE OR REPLACE FUNCTION set_session_var(
				vartype varchar( 16 ),
				varname varchar( 30 ),
				val anyelement)
RETURNS void AS
$$
DECLARE
    tmp_table varchar( 16 ) := 'session_var_tmp';
BEGIN
    execute 'UPDATE ' || tmp_table || ' SET ' || 
    vartype || '=' || val || ' WHERE varname=''' || varname || ''';'; 
END;
$$
  LANGUAGE 'plpgsql' VOLATILE
  COST  100 ;
...
Рейтинг: 0 / 0
17.03.2008, 11:14
    #35194459
StX
StX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить результат выполнения EXECUTE
Если наружу не вылетело ошибки, то внутри всё ок. Все внутренние операции выполняются в той же транзакции, в которой запущена функция (хотя бы и неявной транзакции).
...
Рейтинг: 0 / 0
17.03.2008, 18:23
    #35196285
Вадим Прудивус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить результат выполнения EXECUTE
Попробовать включить обработку ошибок (exception). Или попытаться через returning.
...
Рейтинг: 0 / 0
25.03.2008, 10:06
    #35211221
SeniorAndre
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить результат выполнения EXECUTE
Вроде де FOUND и на UPDATE возвращает True,если обработана запись...., см. хелп..., но про неё найти трудно...


Код: plaintext
1.
2.
3.
4.
IF FOUND THEN
  Return True;
ELSE
  Return False;
END IF;
...
Рейтинг: 0 / 0
10.07.2008, 09:55
    #35422168
Ziva Supernova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить результат выполнения EXECUTE
Если проблема решилась, поделитесь как?
...
Рейтинг: 0 / 0
10.07.2008, 15:04
    #35423209
Гость_0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить результат выполнения EXECUTE
Ziva SupernovaЕсли проблема решилась, поделитесь как?
если Вы про эту проблему:
авторМожет я что то недопонимаю, как мне точно быть уверенным что все
execute
внутри функции отработали нормально.
то такой проблемы не существует. execute внутри функции либо выполняются все успешно, либо все отменяются. это гарантируется транзакционностью СУБД.
...
Рейтинг: 0 / 0
11.07.2008, 15:55
    #35425927
Ziva Supernova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить результат выполнения EXECUTE
Реально-ли сделать так, чтобы execute содержал запрос с ошибкой, но функция не отменялась?
...
Рейтинг: 0 / 0
12.07.2008, 00:09
    #35426573
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить результат выполнения EXECUTE
Ziva SupernovaРеально-ли сделать так, чтобы execute содержал запрос с ошибкой, но функция не отменялась?да, http://www.postgresql.org/docs/8.3/interactive/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
seb=> create or replace function foo() returns void language plpgsql as $$
seb$> begin
seb$>     execute 'ошибка';
seb$> exception
seb$>     when others then
seb$>         raise notice 'execute error detected';
seb$> end$$;
CREATE FUNCTION
seb=> select foo();
NOTICE:  execute error detected
 foo
-----

( 1  запись)
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как получить результат выполнения EXECUTE / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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