Supponiamo di avere una variabile BOOLEAN
all'interno di un/blocco SQL PL in un Modulo Oracle:Valutazione della PL/SQL variabili booleane in Oracle Forms
DECLARE
is_viewable BOOLEAN;
BEGIN
is_viewable := ...;
IF NOT is_viewable THEN
raise_my_error(); // pseudo-code
END IF;
END;
Dopo passa tramite questo codice più volte con un debugger, ho determinato che raise_my_error()
non viene mai chiamato. Per chiarire:
raise_my_error()
fa non vengono chiamati seis_viewable = TRUE
raise_my_error()
fa non vengono chiamati seis_viewable = FALSE
test iniziali suggeriscono che questo comportamento è limitato a PL run/codice SQL all'interno di Oracle Forms e non nel codice PL/SQL eseguito direttamente all'interno del database (sebbene potrei sbagliarmi).
posso ottenere intorno a questo confrontando esplicitamente is_viewable
-FALSE
:
IF is_viewable = FALSE THEN
raise_my_error();
END IF;
io sono ancora curioso di sapere perchè NOT is_viewable
non riporta un risultato TRUE
.
Aggiornamento: Sembra che il mio debugger non abbia mostrato valori corretti e che questa domanda non sia più valida. Mi dispiace per quella confusione.
[promemoria amichevole] come utente esperto, credo che abbiate appena dimenticato di accettare una risposta (dcp's o Jeffrey's). –
@AlexanderMalakhov: ho desiderato accettare una risposta in diverse occasioni, ma la domanda sembra essere non risponde ora che il codice sembra funzionare correttamente. A meno che non mi sbagli, nessuna delle due risposte potrebbe spiegare perché 'NOT is_viewable' sarebbe ** sempre ** valutato a' FALSE' (indipendentemente dal valore di 'is_viewable') mentre' is_viewable = FALSE' valuterà o 'TRUE' o ' FALSE', a seconda del valore di 'is_viewable'. Poiché il problema si è interrotto, non posso verificare alcuna risposta. :( –
Capito.Ho avuto simile (wrt "nessuna risposta corretta, non posso verificare") [domanda] (http://stackoverflow.com/questions/2233856/oracle-forms-6i-crashes-with-0xc0000005-at -start-after-installing-patch-19). Poiché c'erano poche probabilità che qualcun altro potesse mai rispondere alla mia Q, ho deciso di accettare * la risposta più utile * (in opposizione alla corretta). il suo tempo e il suo impegno, e per il mio Q non penzolante nell'elenco delle persone senza risposta. Anche se per essere chiari, non ho alcun problema con qualcuno che non segue la mia strategia (anche perché ovviamente stai facendo un ottimo lavoro per la comunità SO) –