【发布时间】:2014-09-16 17:07:54
【问题描述】:
我正在尝试使用一些替换变量将结果直接假脱机到 CSV。我有这个问题:
SET echo off
set feedback off
set pagesize 0
set termout off
define startdate='12-JAN-14'
define enddate='01-JUN-14'
define vpath=C:\14-0724_Spool testing\'
define dt='60_testupdate_subvar'
define ext='.csv'
SPOOL &&vpath&&dt&&ext
SELECT /*csv*/ table1.SOURCE_DMS_ID,
COUNT(table1. AMOUNT)
FROM table1
WHERE
table1.DATE BETWEEN to_date('&&startdate') and to_date('&&enddate')
--AND table1_DATE BETWEEN '01-JAN-14' and '31-JAN-14'
GROUP BY table1_DIM.SOURCE_DMS_ID;
...被这个脚本调用:
@"\Results_Feed_Spooled.sql"
我专门用脚本调用它(并设置各种其他项目),以便生成的 CSV 文件不会在文件中包含查询。但是,选择查询确实出现在 CSV 文件中。有趣的是,当我将 where 子句切换为实际日期(请参阅查询的注释部分)而不是对替换变量的引用时,查询不会出现在生成的 CSV 中。
为什么在 WHERE 子句中使用变量而不是实际值会导致查询包含在结果文件中?我该如何纠正?我能够使用变量对脚本的有用性很重要。
(SQL 开发者版本 4.0.0.13)
谢谢!
【问题讨论】:
标签: sql oracle csv oracle-sqldeveloper sqlplus