Operadores Lógicos
Os seguintes operadores lógicos
logical operators
são suportados, listados aqui em sua precedência de
avaliação:
NOT
Operação Boolean NOT
Boolean NOT
~
Operação Boolean NOT
Boolean NOT
AND
Operação Boolean AND
Boolean AND
OR
Operação Boolean OR
Boolean OR
Agrupando Expressões Lógicas
Quando uma expressão lógica complexa possui múltiplas condições OR,
é preciso agrupar as condições OR e ordená-las da menos complexa para a
mais complexa a fim de obter um processamento mais eficiente.
Se a probabilidade de ocorrência for conhecida, é preciso ordená-la
da mais provável para a menos provável, pois como qualquer parte de uma
condição OR composta é avaliada como TRUE, o resto da expressão pode ser
ignorado. No entanto, isso não é garantido. Isso também é verdade para a
ordem das condições da função MAP.
Sempre que as operações lógicas AND e OR são misturadas em uma mesma
expressão, é preciso usar parênteses para agrupar dentro da expressão,
garantindo uma avaliação correta e para esclarecer a intenção da
expressão. Por exemplo, considere o seguinte:
isCurrentRevolv := trades.trd_type = 'R' AND
trades.trd_rate = '0' OR
trades.trd_rate = '1';
não gera o resultado pretendido. O uso de parênteses garante a
avaliação correta, como mostrado abaixo:
isCurrentRevolv := trades.trd_type = 'R' AND
(trades.trd_rate = '0' OR trades.trd_rate = '1');
Operador XOR
XOR Operator
A função a seguir pode ser usada para realizar uma operação XOR em 2
valores booleanos:
BOOLEAN XOR(BOOLEAN cond1, BOOLEAN cond2) :=
(cond1 OR cond2) AND NOT (cond1 AND cond2);