pl/pgsql and controling loops

Started by Alain Rogerabout 18 years ago5 messagesgeneral
Jump to latest
#1Alain Roger
raf.news@gmail.com

Hi,

i've read several books extract about controlling loops in postgreSQL under
pl/pgsql and there is something interesting.

once to do a comparison they use :

IF (ret == 1) THEN ...

once,

IF (ret = 1) THEN...

so are they both correct ?
comming from .NET/C++ world, usually we use '==' or '!=', so i expect that
correct ones are '==' and '<>'.

moreover, when i check if the returned value "ret_email" from SELECT email
INTO ret_email FROM tmp_newsletterreg WHERE tmp_usr_id = id_session;
i want to check if it is empty or not, so i do IF(ret_email <> '' ) THEN...
but it does not work... every time it enter in the loop, even if it is empty
string.

where is the problem ?

thx.

--
Alain
------------------------------------
Windows XP SP2
PostgreSQL 8.2.4 / MS SQL server 2005
Apache 2.2.4
PHP 5.2.4
C# 2005-2008

#2Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Alain Roger (#1)
Re: pl/pgsql and controling loops

-------------- Original message ----------------------
From: "Alain Roger" <raf.news@gmail.com>

Hi,

i've read several books extract about controlling loops in postgreSQL under
pl/pgsql and there is something interesting.

once to do a comparison they use :

IF (ret == 1) THEN ...

once,

IF (ret = 1) THEN...

Both are correct.

so are they both correct ?
comming from .NET/C++ world, usually we use '==' or '!=', so i expect that
correct ones are '==' and '<>'.

moreover, when i check if the returned value "ret_email" from SELECT email
INTO ret_email FROM tmp_newsletterreg WHERE tmp_usr_id = id_session;
i want to check if it is empty or not, so i do IF(ret_email <> '' ) THEN...
but it does not work... every time it enter in the loop, even if it is empty
string.

where is the problem ?

Are you sure ret_email is an empty string and not a NULL value. <> won't work on a NULL value. You will need to use IS NULL or IS NOT NULL.

thx.

--
Alain
------------------------------------
Windows XP SP2
PostgreSQL 8.2.4 / MS SQL server 2005
Apache 2.2.4
PHP 5.2.4
C# 2005-2008

--
Adrian Klaver
aklaver@comcast.net

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Adrian Klaver (#2)
Re: pl/pgsql and controling loops

aklaver@comcast.net (Adrian Klaver) writes:

From: "Alain Roger" <raf.news@gmail.com>

once to do a comparison they use :

IF (ret == 1) THEN ...

once,

IF (ret = 1) THEN...

Both are correct.

No they're not, as a simple test would convince you ...
there is no '==' operator in SQL.

regards, tom lane

#4Alain Roger
raf.news@gmail.com
In reply to: Tom Lane (#3)
Re: pl/pgsql and controling loops

this is what i did, and it's true that '==' does not exist under pl/pgsql.
Only '=' should be used.

On Thu, Mar 27, 2008 at 8:53 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

aklaver@comcast.net (Adrian Klaver) writes:

From: "Alain Roger" <raf.news@gmail.com>

once to do a comparison they use :

IF (ret == 1) THEN ...

once,

IF (ret = 1) THEN...

Both are correct.

No they're not, as a simple test would convince you ...
there is no '==' operator in SQL.

regards, tom lane

--
Alain
------------------------------------
Windows XP SP2
PostgreSQL 8.2.4 / MS SQL server 2005
Apache 2.2.4
PHP 5.2.4
C# 2005-2008

#5Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Alain Roger (#4)
Re: pl/pgsql and controling loops

-------------- Original message ----------------------
From: Tom Lane <tgl@sss.pgh.pa.us>

aklaver@comcast.net (Adrian Klaver) writes:

From: "Alain Roger" <raf.news@gmail.com>

once to do a comparison they use :

IF (ret == 1) THEN ...

once,

IF (ret = 1) THEN...

Both are correct.

No they're not, as a simple test would convince you ...
there is no '==' operator in SQL.

regards, tom lane

I stand corrected.

--
Adrian Klaver
aklaver@comcast.net