I have wriiten following simple function in postgresql
CREATE OR REPLACE FUNCTION "MySchema".add_user(p_name character varying,
p_email1 character varying, p_email2 character varying)
RETURNS bigint AS
$BODY$
DECLARE
userId bigint;
BEGIN
INSERT INTO "MySchema"."User"("Name" ,"EMail1" , "EMail2")
VALUES ($1 , $2, $3) ;
Select CURRVAL('"MySchema".user_seq_userid') into userId;
return userid;
END;
$BODY$
LANGUAGE plpgsql VOLATILE STRICT
Function works absoolutely fine if I provide values for all three parameters.
Record gets inserted too.
But if I pass NULL for say last parameter, using SELECT
"MySchema".add_user('A' , 'A', NULL)
function does not do anything and return zero.
No error is shown. But record is not inserted in table.
All columns in table can have NULL value.
**************** CAUTION - Disclaimer *****************
This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely
for the use of the addressee(s). If you are not the intended recipient, please
notify the sender by e-mail and delete the original message. Further, you are
not
to copy, disclose, or distribute this e-mail or its contents to any other
person and
any such actions are unlawful. This e-mail may contain viruses. Infosys has
taken
every reasonable precaution to minimize this risk, but is not liable for any
damage
you may sustain as a result of any virus in this e-mail. You should carry out
your
own virus checks before opening the e-mail or attachment. Infosys reserves the
right to monitor and review the content of all messages sent to or from this
e-mail
address. Messages sent to or from this e-mail address may be stored on the
Infosys e-mail system.
***INFOSYS******** End of Disclaimer ********INFOSYS***