1

Apex で検証を正しく機能させるのに問題があります。

:P5_JACKPOT、:P5_TICKET_PRIZE、:P5_TOTAL_PRIZE の 3 つのページ アイテムで問題が発生しています。ジャックポットは任意のサイズにすることができ、ticket_prize + total_prize は、ジャックポットより LESS である限り、任意のサイズにすることができます。これについて私が行っている検証は次のとおりです。

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

両方の項目に対して同じ検証を行い、必要な置換を行うだけで十分簡単です。問題は、すべての数値で機能しないように見えることです。たとえば、ジャックポットの値が 200 で、他のアイテムが両方とも 50 の場合、エラーが発生するはずがありませんが、フラグが立てられます。ただし、ジャックポットの値が 200 で、その他の値が 100 + 100 の場合は、本来あるべきエラー フラグは発生しません。一部の数値は機能し、他の数値は機能しないようです。これには何か理由がありますか?

4

1 に答える 1

3

問題はデータ型付けの1つであるようです。 :P5_TICKET_PRIZE:P5_JACKPOTは両方とも文字列であるため、それらを比較すると、文字比較のセマンティクスが得られます。アルファベット順では、文字「5」が文字「2」の後に来るため、文字列「50」は文字列「200」の後に来ます。: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 に答える