Thread: pl/pgsql and controling loops
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 :
once,
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
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
-------------- 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 NULLor 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
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
this is what i did, and it's true that '==' does not exist under pl/pgsql. Only '=' should be used.
--
Alain
------------------------------------
Windows XP SP2
PostgreSQL 8.2.4 / MS SQL server 2005
Apache 2.2.4
PHP 5.2.4
C# 2005-2008
On Thu, Mar 27, 2008 at 8:53 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> once to do a comparison they use :No they're not, as a simple test would convince you ...
> IF (ret == 1) THEN ...
>> once,
> IF (ret = 1) THEN...
> Both are correct.
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
-------------- 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