Some unknown error in a function

Started by Jasbinder Baliabout 19 years ago3 messagesgeneral
Jump to latest
#1Jasbinder Bali
jsbali@gmail.com

Hi
Following is the script of my plpgsql function

CREATE OR REPLACE FUNCTION sp_insert_tbl_vrfy_mx(int4,text, text, inet,
text, text)
RETURNS void AS $$
DECLARE
sequence_no int4;
BEGIN
SELECT INTO sequence_no MAX(seq_no) FROM tbl_verify_mx WHERE unmask_id =
$1;

IF sequence_no > 1 THEN
sequence_no = sequence_no + 1;
ELSE
sequence_no = 1;
END IF;

IF $4 =' ' THEN
INSERT INTO tbl_verify_mx(unmask_id, seq_no, email_local,
email_domain, mail_server, mx_records )
VALUES ($1,sequence_no,$2,$3,$5,$6) ;
ELSE
INSERT INTO tbl_verify_mx(unmask_id, seq_no, email_local, email_domain,
ip_address, mail_server, mx_records )
VALUES ($1,sequence_no,$2,$3,CAST($4 as inet), $5,$6) ;
END IF;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;

I run this function using
select sp_insert_tbl_vrfy_mx(55,'jas','xyz.com','192.168.0.105', '
mail.xyz.com,'mxrecoredmxjdlkfjdk')
and get the following error:-

CONTEXT: SQL statement "SELECT $1 =' '"
PL/pgSQL function "sp_insert_tbl_vrfy_mx" line 12 at if

Don't know where I'm going wrong.
Thanks
Jas

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jasbinder Bali (#1)
Re: Some unknown error in a function

"Jasbinder Singh Bali" <jsbali@gmail.com> writes:

I run this function using
select sp_insert_tbl_vrfy_mx(55,'jas','xyz.com','192.168.0.105', '
mail.xyz.com,'mxrecoredmxjdlkfjdk')
and get the following error:-

CONTEXT: SQL statement "SELECT $1 =' '"
PL/pgSQL function "sp_insert_tbl_vrfy_mx" line 12 at if

You didn't show us the actual error message, but I suppose it's unhappy
that ' ' is not a legal inet value.

regards, tom lane

#3Chandra Sekhar Surapaneni
chandu@positivenetworks.net
In reply to: Jasbinder Bali (#1)
Re: Some unknown error in a function

"IF $4 = ' ' THEN"

Here ' ' is not a valid inet value. If you really want to check to see
if the inet value is null, you can cast it to text and compare it.

For example: "IF text('$4') = '' Then"

That will fix your issue.

-Chandra Sekhar Surapaneni

________________________________

From: pgsql-general-owner@postgresql.org
[mailto:pgsql-general-owner@postgresql.org] On Behalf Of Jasbinder Singh
Bali
Sent: Friday, February 09, 2007 11:30 AM
To: pgsql-general@postgresql.org
Subject: [GENERAL] Some unknown error in a function

Hi
Following is the script of my plpgsql function

CREATE OR REPLACE FUNCTION sp_insert_tbl_vrfy_mx(int4,text, text, inet,
text, text)
RETURNS void AS $$
DECLARE
sequence_no int4;
BEGIN
SELECT INTO sequence_no MAX(seq_no) FROM tbl_verify_mx WHERE
unmask_id = $1;

IF sequence_no > 1 THEN
sequence_no = sequence_no + 1;
ELSE
sequence_no = 1;
END IF;

IF $4 =' ' THEN
INSERT INTO tbl_verify_mx(unmask_id, seq_no, email_local,
email_domain, mail_server, mx_records )
VALUES ($1,sequence_no,$2,$3,$5,$6) ;
ELSE
INSERT INTO tbl_verify_mx(unmask_id, seq_no, email_local,
email_domain, ip_address, mail_server, mx_records )
VALUES ($1,sequence_no,$2,$3,CAST($4 as inet), $5,$6) ;
END IF;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;

I run this function using
select sp_insert_tbl_vrfy_mx(55,'jas','xyz.com','192.168.0.105', '
mail.xyz.com <http://mail.xyz.com&gt; ,'mxrecoredmxjdlkfjdk')
and get the following error:-

CONTEXT: SQL statement "SELECT $1 =' '"
PL/pgSQL function "sp_insert_tbl_vrfy_mx" line 12 at if

Don't know where I'm going wrong.
Thanks
Jas