Re: Postgres mystery

From: Michael Fuhr <mike(at)fuhr(dot)org>
To: Shaun Clements <ShaunC(at)relyant(dot)co(dot)za>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Postgres mystery
Date: 2005-03-30 07:45:26
Message-ID: 20050330074526.GA17742@winnie.fuhr.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wed, Mar 30, 2005 at 09:11:09AM +0200, Shaun Clements wrote:
> Can anyone tell me what the problem is here:
> I am inserting into a table via a stored procedure, to a few columns within
> the table and postgres is throwing a
> CANNOT EXECUTE NULL QUERY.
>
> EXECUTE ''INSERT INTO table (column1, column2, column3,
> ''||quote_ident(column4)||'') values
> (''||quote_literal(RECORDNAME.column1)||'',''||quote_literal(RECORDNAME.colu
> mn2)||'',''''stringvalue'''',''||quote_literal(RECORDNAME.column2)||'')'';

One of the operands to || is probably NULL, so the entire INSERT
string ends up being NULL. Example:

SELECT 'abc' || 'def';
?column?
----------
abcdef
(1 row)

SELECT 'abc' || NULL;
?column?
----------

(1 row)

Looks like you need to check for NULL or use COALESCE to convert
NULL to something else.

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Shaun Clements 2005-03-30 08:48:22 Re: Postgres mystery
Previous Message Richard Huxton 2005-03-30 07:41:22 Re: Postgres mystery