Re: Catching DML exceptions in PL/pgSQL

Поиск
Список
Период
Сортировка
От Tomasz Myrta
Тема Re: Catching DML exceptions in PL/pgSQL
Дата
Msg-id 3EEEE304.1010106@klaster.net
обсуждение исходный текст
Ответ на Catching DML exceptions in PL/pgSQL  (Radu-Adrian Popescu <radu.popescu@aldratech.com>)
Ответы Re: Catching DML exceptions in PL/pgSQL  (Radu-Adrian Popescu <radu.popescu@aldratech.com>)
Список pgsql-sql
Dnia 2003-06-17 11:25, Użytkownik Radu-Adrian Popescu napisał:

> Hello all,
> (and sorry if this has been aswered before)
> 
> Take this piece of code for example:
> .....................
> begin
>     _res.code:=1;
>     select id into iid from log where id=_id;
>     if not found then begin
>         _res.msg:=''insert'';
>         *insert into log (log, data) values (_log, _data);
>         if not found* then begin
>             _res.msg:=_res.msg || '' error'';
>             _res.code:=-1;
>         end;
>         end if;
>     end;
>     else begin
> .....................
> The thing is if _data (parameter) is null and table has a (data <> null) 
> check, the insert would fail and abort the function before my "if not 
> found" test.
> 
> I'm porting a java app. from mssql to postgresql, and the java code 
> relies on the stored procedure to always return it's status (in 
> _res.code in this case).
> 
> Is there anything I can do to make sure the function always returns _res ?
> Something along the lines of Oracle's exception handling, or the @@error 
> trick in mssql ?
You can't do it this way. Your insert is violation of some constraint 
(problably "not null" or "primary key" constraint). This kind of violation 
raises exception and whole transaction is aborted. I don't use java, but C 
librares raises also ordinary C exception which can be easily caught. If you 
want to avoid such cases - check your data before inserting them.

Regards,
Tomasz Myrta



В списке pgsql-sql по дате отправления:

Предыдущее
От: Radu-Adrian Popescu
Дата:
Сообщение: Catching DML exceptions in PL/pgSQL
Следующее
От: Radu-Adrian Popescu
Дата:
Сообщение: Re: Catching DML exceptions in PL/pgSQL