Attivare per visualizzare il messaggio utilizzando PL / SQL
Voglio creare un trigger per visualizzare il messaggio "NUOVI DETTAGLI DIPENDENTE INSERITI", ogni volta che un nuovo record viene inserito nella tabella Dipendenti, e ho questo codice per esso-
set serveroutput on;
create or replace trigger display_message
after insert or update on employee
for each row
when(new.emp_id>0)
begin
dbms_output.put_line('new employee details inserted');
end;
Ma questo non mi dà alcun risultato. Si prega di aiutare, grazie in anticipo!
Risposte
Non funzionerà solo se EMP_IDnon è maggiore di 0. È? Nel mio caso, funziona :
Tabella di esempio:
SQL> CREATE TABLE employee
2 (
3 emp_id NUMBER
4 );
Table created.
Trigger:
SQL> CREATE OR REPLACE TRIGGER display_message
2 AFTER INSERT OR UPDATE
3 ON employee
4 FOR EACH ROW
5 WHEN (new.emp_id > 0)
6 BEGIN
7 DBMS_OUTPUT.put_line ('new employee details inserted');
8 END;
9 /
Trigger created.
Collaudo:
SQL> SET SERVEROUTPUT ON;
SQL> INSERT INTO employee (emp_id)
2 VALUES (100);
new employee details inserted --> the message is here!
1 row created.
SQL>
Questo è un uso molto scarso di un trigger. E anche l'uso peggiore di dbms_output. PL / SQL non ha la capacità di interagire con i dispositivi di output sul client. Pertanto l'output di dbms_output.put_line non viene scritto sullo schermo. Viene scritto in un buffer, per essere elaborato o meno dal client. Alcuni processi client sono completamente ignari dell'esistenza di questo buffer. Altri, come sqlplus o SQL Developer, lo sanno, ma devono essere istruiti per elaborarlo e visualizzarlo. Con sqlplus che è tramite 'set serverout on'.
Tutto ciò per dire, dbms_output è un buon strumento di debug, ma non dovrebbe mai essere considerato affidabile in un'applicazione di produzione reale. Devi riconsiderare il motivo per cui lo vuoi. Se esegui un INSERT da qualsiasi applicazione, riuscirà o fallirà. Se fallisce, Oracle metterà un errore nello stack che verrà segnalato dal client. Se non ricevi alcun errore, allora sai che è riuscito. Perché hai bisogno di questo messaggio?