用户在sql命令中输入数据时出现的问题
我有一个批处理文件,当我运行时调用一个SQL文件。此SQL文件提示用户输入我存储在MYPeriod中的数据(此文件接受日期作为输入)。SQL文件的输出为CSV文件。 以下是我的SQL文件代码:用户在sql命令中输入数据时出现的问题,sql,oracle,Sql,Oracle,我有一个批处理文件,当我运行时调用一个SQL文件。此SQL文件提示用户输入我存储在MYPeriod中的数据(此文件接受日期作为输入)。SQL文件的输出为CSV文件。 以下是我的SQL文件代码: PROMPT Enter a period ACCEPT MYPeriod PROMPT 'Period: ' SET LINESIZE 500 FEEDBACK OFF TRIMSPOOL ON TERMOUT OFF HEAD OFF PAGESIZE 0 TERM OFF spool E:\ab
PROMPT Enter a period
ACCEPT MYPeriod PROMPT 'Period: '
SET LINESIZE 500 FEEDBACK OFF TRIMSPOOL ON TERMOUT OFF HEAD OFF PAGESIZE 0 TERM OFF
spool E:\abc\Test\File1_&MYPeriod.csv
select Account || ',' || Membername || ',' || GROUP || ',' || FUTURE1 from ACTUAL_V@UAT1_Test where Key=21 and period_name= '&MYPeriod' ;
spool off
exit
我的问题是:
感谢你们的帮助。替换变量用于将它们与后面的任何字符分开。如果希望在字符串中也使用一个,则必须显式添加该终止:
spool E:\abc\Test\File1_&MYPeriod..csv
对于两个额外的行问题,添加;此时,它在(默认情况下)上设置为,因此它显示您使用的任何替换变量的新旧值
我知道将日期输入文件名的唯一方法是首先将其放入替换变量:
set termout off
column x_run_dt new_value y_run_dt
select to_char(sysdate, 'YYYYMMDDHH24MISS') as x_run_dt from dual;
set termout on
spool E:\abc\Test\File1_&MYPeriod._&y_run_dt..csv
new\u value
子句允许您使用查询列中的值x\u run\u dt
创建替换变量&y\u run\u dt
。当作为脚本运行时,在set termout
子句之间包装生成该值的select会将其隐藏在正常输出中。您的实际问题是什么?首先,我希望文件名为File1(哪个用户输入句点).csv。。第二个问题——如果我将文件名改为File1|new.csv,则会创建一个包含数据的csv文件,但该文件有两行额外的行:从实际值中选择Account | | |'、'| | Membername | |'、'| GROUP | | |'、'| FUTURE1_V@UAT1_Test其中Key=21,period_name='&MYPeriod';第二行从实际值中选择帐户| |'、| |成员名称| |'、| |组| |'、| |未来1_V@UAT1_Test其中Key=21,句点_name='&20-2012'。我不要这两行。如何删除它?是否有一种方法可以创建一个结尾带有用户输入日期的文件:File1_12_2013.csv..类似的东西。?感谢它工作得非常好。此外,我还想添加文件运行的当前日期和时间。如何添加…?类似于spool E:\abc\Test\File1.&MYPeriod.(+系统中的当前日期和时间).csv.如何添加。?