熟悉Oracle编程的朋友请进,150分相送。如何向oracle某一数值型字段插入空值(NULL)

rockhard 2002-10-03 11:08:16
如何向oracle某一数值型字段插入空值。

如:
create table test(id number(5) ,name varchar(50));

ADataSet->SQL->Add("insert into test (id,name) values(:ID,:name)");
ADataSet->ParamByName("name")->AsString="";//这样就插入了空值。
而ID字段怎么像上面一样能写入空值(即NULL)进去。

(不可以改上面的SQL语句绕弯子解决,那样程序的代码量大好多)
...全文
1244 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
penitent 2002-10-04
  • 打赏
  • 举报
回复
oracle处理数字的时候,可以用''来表示NULL,也可以插入'23'表是数字,没有问题的
如inert into table(id,name) values('23','test')
oracle会自动转换。
其它类型,除了date需要用to_date()转换外,都可以用''的方式写进去
tiko 2002-10-04
  • 打赏
  • 举报
回复
可以定义一个指示器变量,如:short id0; 其前也应加“:”(冒号),而且必须附在其相关联的宿主变量之后

当id0 == -1 , 插入的是空值,否则插入的是ID的值
rockhard 2002-10-04
  • 打赏
  • 举报
回复
to penitent(只取一瓢):
oracle 中如果是整型,你把它当作字符型,就象这样
ADataSet->ParamByName("ID")->AsString="";
尽管ID是整型,但上面那句确实可以写一个空值进去。但如果是其它类型的,就不知怎么办了,当然可以象你所说的那样,将语句写成
ADataSet->SQL->Add("insert into test (name) values(:name)");

关键是有时我要写ID值,有时不用写(里面放NULL),我想在程序中统一处理,才遇到这样的问题。不知道是不是什么类型想写空值,都可以像上面的那样的处理,把它当作字符型,然后什么都不写,就写进空值了。
penitent 2002-10-04
  • 打赏
  • 举报
回复
你以上所说的,其实也就是父子表
先说
ADataSet->SQL->Add("insert into test (id,name) values('','test')");
在子表中,是肯定可以的。因为子表id是可以NULL,但是是外键。
还有,你如果先不处理id,用这样的语句。
ADataSet->SQL->Add("insert into test (name) values(:name)");
ADataSet->ParamByName("name")->AsString="test"; //或=""
就可以对id写入NULL,而只写name.也肯定是可以的。
而你的这种写法,不知道这样可不可以
ADataSet->SQL->Add("insert into test (id,name) values(:ID,:name)");
ADataSet->ParamByName("name")->AsString="";
ADataSet->ParamByName("id")->AsString="NULL";
or
ADataSet->ParamByName("id")->AsString="''";
你试试。
我对oracle比较熟,cb稍微弱一点,如果还不可以,你则再回复。
oracle中的浮点型就用number
如果定义为number,则可以存放任意-1*10E-130到9.999……9*10E125数据类型数据
如果定义为number(n),则只可以放n长度整型
如果定义为number(n,m)则除了整数位外,可以存放m位小数。

jishiping 2002-10-04
  • 打赏
  • 举报
回复
ADataSet->SQL->Add("insert into test (id,name) values(NULL,:name)");
ADataSet->ParamByName("name")->AsString="";//这样就插入了空值。
这样ID字段就是空值(即NULL)了。
cnphw 2002-10-04
  • 打赏
  • 举报
回复
你所说的是插入,不是修改,我插入时不对该字段赋值,就可以了
rockhard 2002-10-03
  • 打赏
  • 举报
回复
赋0 不可以,请看下面的表(一个树型结构设计)

create table Address(
ID number(8) primary key,
Name varchar2(50),
ParentID number(8),
constraint Address_ParentID foreign key(ParentID) references Address(ID));

ParentID值加了约束(外键为同一个表的主键),要么为某一条记录的ID值,要么只能为空,且插入第一条记录时,该值一定只能为空,否则没办法插入进去。

敬请各位相助,曾有网友问过此事,但没有解决。
lw_yx 2002-10-03
  • 打赏
  • 举报
回复
为什么要空值?赋0不可以吗?
rockhard 2002-10-03
  • 打赏
  • 举报
回复

如果是浮点型又怎么解决?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧