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.
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
@kfinity es ist leer, es gibt keine "die Nachricht ist:", das Problem ist beim Aufruf von pkg_test.test_function(). – zenami
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