39-1:
	conn sys/oracle as sysdba
	GRANT EXECUTE ON dbms_alert TO scott;
39-2:
	CREATE OR REPLACE TRIGGER tr_dml
	AFTER INSERT OR UPDATE OR DELETE ON emp
	BEGIN
	  CASE
	    WHEN INSERTING THEN
	      dbms_alert.signal('dml_alert',ora_login_user
	        ||''||TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS')
	        ||'ִINSERT');
	    WHEN UPDATING THEN
	      dbms_alert.signal('dml_alert',ora_login_user
	        ||''||TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS')
	        ||'ִUPDATE');
	    WHEN DELETING THEN
	      dbms_alert.signal('dml_alert',ora_login_user
	        ||''||TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS')
	        ||'ִDELETE');
	  END CASE;
	END;
	/
39-3:
	CREATE OR REPLACE FUNCTION dml_message
	RETURN VARCHAR2 IS
	  message VARCHAR2(200);
	  status INT;
	BEGIN
	  dbms_alert.register('dml_alert');
	  dbms_alert.waitone('dml_alert',message,status);
	  IF status=0 THEN
	     RETURN message;
	  ELSE
	     RETURN 'Ԥ¼ʹô';
	  END IF;
	  dbms_alert.remove('dml_alert');
	END;
	/



