Это происходит потому, что @
работает так же, как #include
в препроцессоре ac / c ++, то есть SQL*Plus
вставляет содержимое файла hellp.pl
в время компиляции .
Если вы хотите выводить содержимое файла при срабатывании триггера, вы можете посмотреть utl_file
.
Но вам, вероятно, проще создать пакет, подобный
create or replace package trigger_content as
text varchar2(100);
end;
/
Затем вы можете динамически изменять значение текста:
exec trigger_content.text := 'hello world';
и напечатайте значение текста с помощью
dbms_output.put_line(trigger_content.text);
Однако последнее «решение» не работает между сеансами.