2013-04-04 1 views
0

У меня есть триггер:Отображение триггера DBMS_OUTPUT.PUT_LINE в Oracle Apex

CREATE OR REPLACE TRIGGER Med_Allergy_Warning BEFORE INSERT ON Prescription FOR EACH ROW 
BEGIN 
    IF (Find_ADR(:NEW.Visit_ID, :NEW.Medication_ID) != 'GOOOO') THEN 
     DBMS_OUTPUT.PUT_LINE('Medication ('||:NEW.Medication_ID||') May cause an allergic reaction… You are warned!'); 
    ELSE 
     DBMS_OUTPUT.PUT_LINE('Medication ('||:NEW.Medication_ID||') was prescribed successfully!'); 
END IF; 
END;/ 

, который выдает DBMS_OUTPUT.PUT_LINE всякий раз, когда пользователь вводит рецепт, которые могут вызывать аллергические реакции. Тем не менее, пользователь создает запись в APEX - так или иначе, чтобы создать регион, чтобы показать это сообщение DBMS_OUTPUT.PUT_LINE на той же странице?

+0

Пожалуйста, скажите, что этот код не попадет в какое-либо настоящее медицинское приложение! – Chucky

ответ

2

В теории вы должны иметь возможность позвонить DBMS_OUTPUT.GET_LINE, чтобы получить данные в вашем коде APEX и отобразить это. Тем не менее, создание функциональности приложения, которое зависит от написания до DBMS_OUTPUT, является ужасным подходом. Если вы хотите регистрировать информацию о потенциальных аллергических реакциях, вы действительно должны действительно зарегистрировать это в таблице, которую приложение APEX может сообщить. Надеясь, что независимо от того, какое приложение вызывает INSERT, DBMS_OUTPUT не говоря уже о выделенном достаточно большом буфере для вывода, не говоря уже о том, что он не помнит, чтобы читать из буфера и показывать, что для человека это действительно плохая идея.