• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 432
  • Last Modified:

can we save null in numeric feild in SQL

HI,

can we save a null instead of zero in numeric feild in SQL ...i mean is there any predefined function in SQL which save the null if the value is zero and save regularly if that value is not zero..

insert into x value y

i need to insert null if y is zero and regular value where y is not zero..

where y is declared as long in c++.

y=0 then x = null
if y !=0 then x=y;

 If their is no predefined function can i have a snnipet code which does that
0
mannn
Asked:
mannn
  • 4
  • 3
  • 3
  • +1
1 Solution
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
>can we save a null instead of zero in numeric feild in SQL ...
yes

insert into x values (case when y = 0 then NULL else y end)

Open in new window

0
 
sdstuberCommented:
insert into your_table (your_number) (nullif(y,0))
0
 
mannnAuthor Commented:
thanks angelIII ,

but i need to use that SQL code in C++..i.e iam using pro*c language..

so

so i used the query as update Z set x = :(case when y = 0 then NULL else y end)
and insert into Z(x) values :(case when y = 0 then NULL else y end)

where Z is the table name

iam getting compile error when tried to use that query


PCC-S-02201, Encountered the symbol "when" when expecting one of the following:

   ; , : ( [ * + - / . | ++ -- -> indicator, where,
0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
Guy Hengel [angelIII / a3]Billing EngineerCommented:

update Z set x = (case when :y = 0 then NULL else :y end)

resp:


update Z set x = nullif(:y,0 )
0
 
mannnAuthor Commented:
Thanks angelIII

atill getting following errors


PCC-S-02201, Encountered the symbol "when" when expecting one of the following:

   ( ) * + - / . @ |

Syntax error at line 16298, column 66,


 Encountered the symbol "then" when expecting one of the following:

   ; , = ( [ * ? | & < > + - / % . ^ *= /= %= += -= <<= >>= &&=
   ||= ^= | & == != <= >= << >> ++ -- ->

Syntax error at line 0, column 0,

PCC-S-02201, Encountered the symbol "<eof>" when expecting one of the following:

   ; : an identifier, end-exec, random_terminal

Error at line 0, column 0 in
0
 
mannnAuthor Commented:
if i usee the nullif iam getting the following error


PLS-S-00201, identifier 'NULLIF' must be declared
Error at line 16297, column 5 in file crs_crsres.i
    EXEC SQL UPDATE GWYDB.CRS_RES SET
0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
what version of oracle are you connecting to?
update Z set x = DECODE(:y, 0, NULL , :y ); 

Open in new window

0
 
evilrixSenior Software Engineer (Avast)Commented:
Just an observation (it's been a while since I did any SQLing) but as I recall you can only set a field to be NULL if the schema for the table allows it. This being the case you might want to check this.
0
 
sdstuberCommented:
the error above appears to be a parsing limitation of pro*c, so using decode is probably the best replacement for the builtin nullif.

If you have happen to have dynamic sql then you should be able to use nullif since pro*c won't have to parse it, but rather the database itself.
0
 
mannnAuthor Commented:
Hi all,


i were using
update Z set x = DECODE(:y, 0, NULL , :y );  and

 insert in to Z y values DECODE(:y, 0, NULL , :y );


no compile errors but still saving y as Zero(for insert statement)....

right now iam testing insert statement..
iam not getting what going wroung...;-)
0
 
sdstuberCommented:
can you post the a more complete code snippet of your *.pc file?  the insert/update decode should work
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 4
  • 3
  • 3
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now