Re: Null function parameters

From: tolik(at)aaanet(dot)ru (Anatoly K(dot) Lasareff)
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: "Graham Vickrage" <graham(at)digitalplanit(dot)com>, "postgresql" <pgsql-sql(at)postgresql(dot)org>
Subject: Re: Null function parameters
Date: 2000-08-23 11:46:14
Message-ID: 86ya1o8ak9.fsf@tolikus.hq.aaanet.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

>>>>> "TL" == Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> writes:

TL> "Graham Vickrage" <graham(at)digitalplanit(dot)com> writes:
>> However my understanding was that if the default value is SQL NULL then any
>> values passed into the function that are null would be treated as 'NULL'.

TL> Not sure what you think you meant by that, but a null is a null. If you
TL> declared the table column as NOT NULL then Postgres is doing exactly
TL> what it should. You may wish to code the insert along the lines of

TL> INSERT INTO table VALUES (..., COALESCE($1, suitable-default), ...)

TL> COALESCE is a handy notation for "value1 unless it's NULL, in which case
TL> value2".

TL> regards, tom lane

But unfortunately we have no answer for primary question:

| Why if we pass to function ONLY ONE null agument all the oters |
| argumenta in function's boby are null too? |
| Or: is it possible to pass null arguments into plpgsql functions? |

Example.

create function a(int, int) returns int as '
begin
raise notice ''1: % 2: %'', $1, $2;

if $1 is null then
return $2;
end if;

return $1;
end;
' language 'plpgsql';

tolik=# select a(1,2);
NOTICE: 1: 1 2: 2
a
---
1
(1 row)

tolik=# select a(null,2);
NOTICE: 1: <NULL> 2: <NULL>
a
---

(1 row)

--
Anatoly K. Lasareff Email: tolik(at)aaanet(dot)ru

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Graham Vickrage 2000-08-23 12:07:31 RE: Null function parameters
Previous Message hlefebvre 2000-08-23 10:39:39 Re: Date of creation and of change