2017-08-25 2 views
1

Ich benutze Oracle Forms 6i mit Oracle db 10g auf einem Windows-Rechner, in einer Form, wenn ich auf eine Schaltfläche klicke, wird der Auslöser WHEN-BUTTON-PRESSED aufgerufen Aufruf einer Funktion eines Pakets in der Datenbank, ist die PL/SQL-Code sowohl für den Auslöser und die Funktion:Aufruf einer Funktion von Oracle-Formularen

die Funktion:

Function test_function (code Varchar2) RETURN Varchar2 IS 
BEGIN 
    if code IN ('Y') then 
     return('Yes'); 
    else 
     return('no'); 
    endif; 
END; 

der Auslöser:

DECLARE 
    message_test varchar2(20); 
BEGIN 
    message_test := pkg_test.test_function('Y'); 
    message('the message is: ' || message_test);pause; 
END; 

Mein Problem hier ist, dass es doesn bin es wie alles, aber wenn ich pkg_test.test_function('Y') in SQL schreiben * plus oder in SqlDevelopper es zeigt 'Yes' als Ergebnis

Oder wenn ich message_test := pkg_test.test_function('Y'); mit select pkg_test.test_function('Y') into message_test from test; ändern funktioniert es auch.

was könnte die Ursache dafür sein?

PS: Dies ist nur ein Test-Code, der eigentliche Code ist komplexer als das.

+0

Ist Ihre Ausgabe leer? Oder zeigt es "die Nachricht ist:" und keine Nachricht? Denn wenn es die erste ist, dann macht Ihre message() -Funktion nichts, aber wenn es die zweite ist, liegt das Problem beim Aufruf von pkg_test.test_function(). – kfinity

+0

@kfinity es ist leer, es gibt keine "die Nachricht ist:", das Problem ist beim Aufruf von pkg_test.test_function(). – zenami

+0

Hmm, vielleicht bekommen Sie einen Fehler? Sie könnten das Ende des Triggers ändern in: 'EXCEPTION wenn andere dann Nachricht (dbms_utility.format_error_backtrace); ENDE; 'um zu sehen, was es ist. – kfinity

Antwort

0

Wenn es nur Test ist, können Sie versuchen, alert() - Funktion zu zeigen?

Stellen Sie sicher, dass Sie in Ihren Formularbenachrichtigungen die Warnung ALERT_OK erstellen.

+0

"Show_alert" hat nur ein Argument, das ist der Name/die ID der Warnung, also funktioniert diese Zeile nicht "alert_resp: = show_alert ('ALERT_OK', 'die Nachricht ist:' || message_test);" – zenami