Команда SQL для печати имени файла .SQL - PullRequest
0 голосов
/ 01 ноября 2019

Существует ли какая-либо команда SQL для печати имени файла .SQL, который в данный момент выполняется в приглашении sqlplus?

Существует способ Unix сделать это. Но я ищу правильную команду SQL, которая отображает текущее имя файла.

1 Ответ

3 голосов
/ 01 ноября 2019

Нет правильной команды для этого, но отличный (и очевидный) ER для sqlcl

Есть несколько способов сделать это сегодня. Первый - добавить код в каждый скрипт для использования dbms_application_info и установить для модуля / действия имя процесса и сценария. Это будет работать с любым инструментом, так как он помещает информацию в базу данных для последующего извлечения через sql / plsql. Это также может быть удобно, поскольку это записывается в такие вещи, как ASH / AWR / v $ session.

Существует еще один специфический для sqlcl способ - команда script для получения доступа к запущенному контексту и его печати. Вот пример обоих вариантов >>

SQL> !cat k.sql
--- generic 
exec DBMS_APPLICATION_INFO.SET_MODULE('InstallScript','k.sql');


select   sys_context('USERENV', 'ACTION'), sys_context('USERENV', 'MODULE') from dual;

-- sqlcl specific.....
script
ctx.write(ctx.getLastUrl() + "\n");
/

SQL> @k.sql

PL/SQL procedure successfully completed.

   SYS_CONTEXT('USERENV','ACTION')    SYS_CONTEXT('USERENV','MODULE')
__________________________________ __________________________________
k.sql                              InstallScript


file:/Users/klrice/k.sql
SQL>
...