Oracle SQL, катушка с динамом c имя файла - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь спулировать csv, в имени которого содержится current_date:

spool '\mydir\'||to_char(current_date,'YYYYMMDD')||'.csv';
  SELECT /*csv*/* FROM mydata;
spool off;

Однако я получаю сообщение об ошибке:

SP2-0768: Illegal SPOOL command
Usage: SPOOL { <file> | OFF | OUT }
where <file> is file_name[.ext] [CRE[ATE]|REP[LACE]|APP[END]]

Разве это не разрешено? Есть ли обходной путь?

Та же самая ошибка появляется, если я пытаюсь использовать переменную подстановки, которая также не разрешена.

Ответы [ 2 ]

0 голосов
/ 30 марта 2020
col myspoolbase noprint new_value val_myspoolbase
select 'myfilename'  myspoolbase from dual;

col log_date noprint new_value val_log_date
select to_char(sysdate,'yyyymmdd_hh24miss') log_date from sys.dual;
spool &&val_myspoolbase._&&val_log_date..log

select sysdate from dual;
spool off
0 голосов
/ 30 марта 2020

Вот пример того, как я это делаю [вам может понадобиться немного поиграться (например, установить заголовок), чтобы получить именно так, как вы хотите):

set echo off 
set feedback off
set term off verify off head on
set linesize 200 pagesize 9999
set long 4000000
set serveroutput on

-- get instance name in file name
column DATE_YYYYMMMDDD new_val FILE_NAME noprint

Select to_char(sysdate, 'YYYYMMDD') DATE_YYYYMMMDDD from  dual;


spool \temp\CSV_&FILE_NAME..CSV

select table_name || ',' || column_name from user_tab_columns; 

spool off
set serverout off
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...