hur.cn - 华软网

 热门搜索

嵌入式SQL的问题:记录为啥删不掉!!!

  作者:未知    来源:网络    更新时间:2019/5/10
int li_salary

// 读取用户输入
li_salary = dw_user_input.object.salary[1]

delete from salary_table
  where salary = :li_salary;
commit;

如果salary不为空值(NULL),则能够删除salary等于指定值的记录。
然则若为空,那么内外的记录没有被删除,这是为啥?注:内外有salary字段为null的记录啊!
------华软网友回答------
if isnull(li_salary) then

    delete from salary_table
    where salary is null;
else
delete from salary_table
  where salary = :li_salary;
end if
commit;
------华软网友回复------
单纯的解决这个问题的方法。同楼上
不过,
程序中删除记录时,
where条件最好指定表主键。
向你说的这个例子;如果说实际程序执行时;极可能会误删其它
------华软网友回复------
salary 为null的时候,你用=,当然删不掉了。
------华软网友回复------
null确实对照烦,我都是设定默许值。
------华软网友回复------
谢谢列位,果然是pb的问题!照理来说编写embeded sql parser的人应该认识到这一点,究竟代码里写的嵌入式SQL语句又不是直接提交给数据库的,而是需要举行翻译(parser的事情),只需多加一个判断,即当等号后面绑定的变量值为null时,自动变为is操作符,再提交给数据库

在这里bs一下sybase,希望能更人性化一点!日常平凡开发程序时,先要怀疑是否是PB自身的问题,最后分析是否自己程序的问题,呵呵!!!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。