1

我在让验证在 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,则会导致错误标记,而它不应该标记。但是,累积奖金值为 200,而其他值为 100 + 100 不会导致错误标志,因为它应该。似乎有些数字有效,有些则无效。有什么理由吗?

4

1 回答 1

3

听起来问题是数据类型之一。 :P5_TICKET_PRIZEand:P5_JACKPOT都是字符串,所以当你比较它们时,你会得到字符比较语义。按字母顺序,字符串“50”在字符串“200”之后,因为字符“5”在字符“2”之后。如果要将 in 中的数值与 in: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;
于 2012-07-24T00:12:49.680 回答