Определение переменной SQLPlus - PullRequest
0 голосов
/ 21 июля 2009

Я хочу сделать это в SQLPlus: определить файл, который содержит сегодняшнюю дату в своем имени, и отделить вывод инструкции SQL для этого файла. Я знаю, как перенести вывод оператора SQL в файл. Просто не знаю, как объявить имя файла как переменную, содержащую сегодняшнюю дату.

Например, выберите все строки с сегодняшней отметкой времени из таблицы ERROR и выведите результаты в файл с именем TODAYS_ERRORS_YYYYMMDD.log.

Я использую BAT-файл, который вызывает SQL plus следующим образом:

sqlplus -silent user/password@errorDB @c:\temp\error_query.sql

Я могу запустить вышеуказанный bat-файл и успешно вывести строки в файл со статическим именем файла, например TODAYS_ERRORS.log. Просто не знаю, как объявить имя файла, чтобы оно содержало в своем имени сегодняшнюю дату.

Вот так выглядит мой error_query.sql файл прямо сейчас:

set feedback off;
set echo off;

spool c:\temp\TODAYS_ERRORS.log

SELECT created_time      AS "Created Time",
       error_severity    AS "Severity",
       error_desc        AS "Error Text"
FROM ERROR
WHERE
  to_date(to_char(created_time,'YYYYMMDD') = to_date(to_char(sysdate,'YYYYMMDD');

spool off;
exit;

Ответы [ 2 ]

1 голос
/ 21 июля 2009

SPOOL с динамическим именем файла.
http://www.lazydba.com/oracle/0__57310.html

Также можно написать команду DOS для получения даты.
1-я ссылка при поиске: DOS + Batch + Date -> http://www.robvanderwoude.com/datetime.php

0 голосов
/ 14 февраля 2017

Вы можете создать динамическое имя для вашего файла спула следующим образом:

col datum new_value today
select to_char(sysdate,'YYYYMMDD') as datum from dual;

set heading off
set linesize 128
set echo off
set feedback off

spool today_&today..log
rem Your query here ...     
select ...
/
spool off
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...