在文本字段上使用Apex验证?

时间:2012-07-23 23:44:53

标签: oracle oracle-apex

我遇到问题,我的验证在Apex中正常运行。

我有3个页面项目给我带来麻烦,:P5_JACKPOT,:P5_TICKET_PRIZE,:P5_TOTAL_PRIZE。累积奖金可以是任何大小,并且ticket_prize + total_prize可以是任何大小,只要它们少于累积奖金即可。我对此的验证如下:

if :P5_TICKET_PRIZE > :P5_JACKPOT then
return false;
else
return true;
end if;

两个项目的相同验证,必要的替换,足够简单。问题是,它似乎并不适用于所有数字。例如,累积奖金值为200,其他项目为50会导致错误标记,而不应该标记错误。但是,如果Jackpot值为200,其他值为100 + 100,则不会产生错误标记。似乎有些数字有效,有些则无效。这有什么原因吗?

1 个答案:

答案 0 :(得分:3)

听起来问题是数据输入问题。 :P5_TICKET_PRIZE:P5_JACKPOT都是字符串,所以当你比较它们时,你会得到字符比较语义。按字母顺序,字符串“50”在字符串“200”之后,因为字符“5”在字符“2”之后。如果您要将:P5_TICKET_PRIZE中的数值与:P5_JACKPOT中的数值进行比较,则需要将to_number函数应用于表达式的两侧

if to_number( :P5_TICKET_PRIZE ) > to_number( :P5_JACKPOT ) then
  return false;
else
  return true;
end if;