【发布时间】:2015-07-30 06:23:26
【问题描述】:
你能帮帮我吗?
当我在 Toad 中执行下面的 .sql 文件时,它给了我预期的结果。
with
a as(select extract(year from sysdate)var_year,to_char(sysdate,'mm-dd')var_day from dual),
b as(select case when var_day between '10-01'and '12-31'
then to_date(var_year||'-10-01','yyyy-mm-dd')
else to_date(var_year-1||'-10-01','yyyy-mm-dd')end d1,
case when var_day between'10-01'and'12-31'
then to_date(var_year+1||'-09-30','yyyy-mm-dd')
else to_date(var_year||'-09-30','yyyy-mm-dd')end d2
from a)
select * from b,SCHEMA.TABLE1
where SCHEMA.TABLE1.DATE_FRAIS between b.d1 and b.d2;
但是当我尝试使用添加假脱机功能的 .cmd 作业启动它时,控制台打开但没有任何反应,并且控制台保持打开状态。 .csv 文件已生成,但里面没有任何内容。
请在下面找到脚本不起作用(假脱机成功但没有内容):
SET FEEDBACK OFF
set heading on
SET PAGESIZE 0
SET LINESIZE 8000
set pagesize 50000
SET COLSEP ";"
COLUMN dcol new_value mydate noprint
select to_char(sysdate,'YYYY_MM_DD') dcol from dual;
SPOOL test.csv;
with
a as(select extract(year from sysdate)var_year,to_char(sysdate,'mm-dd')var_day from dual),
b as(select case when var_day between '10-01'and '12-31'
then to_date(var_year||'-10-01','yyyy-mm-dd')
else to_date(var_year-1||'-10-01','yyyy-mm-dd')end d1,
case when var_day between'10-01'and'12-31'
then to_date(var_year+1||'-09-30','yyyy-mm-dd')
else to_date(var_year||'-09-30','yyyy-mm-dd')end d2
from a)
select * from b,SCHEMA.TABLE1
where SCHEMA.TABLE1.DATE_FRAIS between b.d1 and b.d2;
SPOOL OFF
然而,当我通过添加假脱机函数的 .cmd 作业启动“简单”.SQL 文件时,它可以工作(可能是因为我删除了“CASE”?)。生成 .csv 文件并且里面有内容
请在下面找到一个脚本工作示例(假脱机成功与内容):
SET FEEDBACK OFF
set heading on
SET PAGESIZE 0
SET LINESIZE 8000
set pagesize 50000
SET COLSEP ";"
COLUMN dcol new_value mydate noprint
select to_char(sysdate,'YYYY_MM_DD') dcol from dual;
SPOOL test.csv;
with
a as (select extract(year from sysdate) var_year1, extract(year from sysdate) var_year2, to_char(sysdate) var_day from dual)
select * from a;
SPOOL OFF
【问题讨论】:
-
如果您从 SQL*Plus 命令行运行“非工作”查询,您会得到什么?
-
您的 .cmd 文件如何启动 SQL*Plus 并使用 @ 运行脚本?你的脚本末尾有
exit吗? -
您的
table1是否实际上具有您可以从 SQL*Plus 中看到的匹配数据 - 或者您是否可能通过查询工作的同一个 Toad 会话插入了一些数据,但尚未提交?我怀疑这两个问题 - 未提交的数据和脚本没有退出。请提供更多详细信息。您还可以大大简化您正在做的事情。 -
@Politank-Z :如果您从 SQL*Plus 命令行运行“非工作”查询 => 控制台打开,但没有任何反应,控制台保持打开状态,而查询工作正常,我看到了SQL行的处理。
-
@AlexPoole:Cmd 使用以下命令启动 SQL*plus:sqlplus username/password@databasename @"c:\my_script.sql"。不,最后没有出口。但问题不是控制台保持打开状态,而是控制台中的行没有像我的示例工作脚本那样处理(在我最初的问题中描述)