Re: Null function parameters

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

>>>>> "GV" == Graham Vickrage <graham(at)digitalplanit(dot)com> writes:

GV> Thanks Anatoly
GV> So if I understand you correctly you can't pass more than one NULL int into
GV> a function?

I'afraid no. My question is: if I pass one null argument into function
then all
other argumens, which are not null, became null inside function body.

GV> Therefore Newbe DBA type question: -
GV> Is this a shortcoming in postgres or is it to be expected when dealing with
GV> transactions?
GV> If it is a shotcoming are there any plans to include it in future releases?

GV> Regards

GV> Graham

GV> -----Original Message-----
GV> From: tolik(at)tolikus(dot)hq(dot)aaanet(dot)ru [mailto:tolik(at)tolikus(dot)hq(dot)aaanet(dot)ru]On
GV> Behalf Of Anatoly K. Lasareff
GV> Sent: 23 August 2000 12:46
GV> To: Tom Lane
GV> Cc: Graham Vickrage; postgresql
GV> Subject: Re: [SQL] Null function parameters

>>>>> "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
GV> any
>>> values passed into the function that are null would be treated as
GV> 'NULL'.

TL> Not sure what you think you meant by that, but a null is a null. If
GV> 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
GV> case
TL> value2".

TL> regards, tom lane

GV> But unfortunately we have no answer for primary question:

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

GV> Example.

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

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

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

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

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

GV> (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 Andreas Tille 2000-08-23 13:44:12 Re: Date of creation and of change
Previous Message hlefebvre 2000-08-23 12:35:31 Re: Using SETOF in plpgsql function