Oracle一则诡异的程序


今天检查程序的时候,发现一个诡异的问题。如下所示。

  function chkA_B return varchar2 as

  a   varchar2(10):=NULL;

  b   varchar2(10):='1';

  begin

  if a=b then

  return 'Error';

  end if;

  return 'ok';

  end;

  这段程序诡异地返回ok,而不是Error. 通过跟踪,程序进入了 return 'error' .但是紧接着也执行了return 'ok'.

  如果将if 的条件改为 if nvl(a,'0')=b 则程序正常。

  上述诡异程序是在9i上测试的。不知后续版本是否有所改变,没有测试

今天检查程序的时候,发现一个诡异的问题。如下所示。

  function chkA_B return varchar2 as

  a   varchar2(10):=NULL;

  b   varchar2(10):='1';

  begin

  if a=b then

  return 'Error';

  end if;

  return 'ok';

  end;

  这段程序诡异地返回ok,而不是Error. 通过跟踪,程序进入了 return 'error' .但是紧接着也执行了return 'ok'.

  如果将if 的条件改为 if nvl(a,'0')=b 则程序正常。

  上述诡异程序是在9i上测试的。不知后续版本是否有所改变,没有测试


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3