On Friday, February 6, 2015, Adrian Klaver <adrian.kla...@aklaver.com>
wrote:

> On 02/06/2015 10:26 AM, Tim Smith wrote:
>
>> Re:So, you have an input parameter named "session_id" and a query with
>> a column named "session_id" - this is the problem.
>>
>> Well, I'll re-try with a revised function, but surely the database
>> could have come up with a more meaningful and insightful message than
>> the coded incomprehensible error message it did ?    I would say its
>> not only user error, its developer error too for creating such
>> confusing error messages !
>>
>
> Well actually you did yourself a disservice by including the EXCEPT code.
> That changed the error message. Taking that code out and running the
> failing function you get:
>
> test-> validateSession('441122','10.11.12.13','abc',3600,3600);
> ERROR:  column reference "session_id" is ambiguous
> LINE 2: session_id=session_id and session_ip=client_ip
>         ^
> DETAIL:  It could refer to either a PL/pgSQL variable or a table column.
> QUERY:  select *                   from app_val_session_vw where
> session_id=session_id and session_ip=client_ip
> CONTEXT:  PL/pgsql function 
> validatesession(character,inet,character,bigint,bigint)
> line 7 at SQL statement
>
> I would say that is fairly specific:)


The exception block is ok, you want to report the session-id passed (via
raise notice or similar), but you want to use the "RAISE;" form (i.e., no
args) to re-raise the original error.

http://www.postgresql.org/docs/9.4/interactive/plpgsql-errors-and-messages.html

David J.

Reply via email to