2016-11-11 1 views
0

Ich habe einen WHEN-BUTTON-PRESSED Trigger, der eine Verkaufstransaktion verarbeitet, innerhalb des Triggers gibt es eine Überprüfung der Verkaufstransaktionsmenge.Wie Benutzereingaben in Oracle-Form zur Laufzeit erhalten?

Wenn der Betrag größer als 1000 ist, wird der Autorisierungscode vom Senior benötigt.

Wie erhalte ich den Autorisierungscode, während er noch im Auslöser ist?

Ich habe versucht, eine neue Leinwand aufzurufen, um den Autorisierungscode zu erhalten, aber der WHEN-BUTTON-PRESSED Trigger wird weiterhin ausgeführt.

Antwort

0

Raise form_trigger_failure Ausnahme zum Abbrechen der Triggerverarbeitung. Der Benutzer gibt dann den Autorisierungscode ein und klickt erneut auf die Schaltfläche.

... 
if :your_block.amount > 1000 then 
    message('Enter authorization code'); 
    raise form_trigger_failure; 
end if; 

-- here continue your transaction 
+0

Vielen Dank für Ihre Antwort, aber ich möchte den Benutzer auffordern, den Autorisierungscode einzugeben, ohne eine Ausnahme auszulösen. In Java können Sie eine Scanner-Klasse verwenden, um eine Eingabe vom Benutzer zu erhalten. z.B. System.out.println ("Geben Sie eine Nummer ein:"); int n = Leser.nextInt(); – Sabe

+1

Sehen Sie sich die Problemumgehung an, ohne eine Zeichenfläche zu verwenden: "Eine neue Zeichenfläche reicht nicht aus. Wenn Sie jedoch ein anderes Formular aufrufen (das den Autorisierungscode akzeptiert), wartet WBP-Trigger, bis Sie vom aufgerufenen Formular zurückkehren und dann fortfahren seine Ausführung. "http://www.orafaq.com/forum/m/657510/#msg_657510 – Sabe

+0

ja, das wird funktionieren. Sie können typische "Dialoge" entwickeln und aus anderen Formen verwenden. Seien Sie sich der Transaktion bewusst, genannt Form kann seine eigene haben, aber ich denke, es ist kein Problem in Ihrem Fall. –