Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用户在sql命令中输入数据时出现的问题_Sql_Oracle - Fatal编程技术网

用户在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

我有一个批处理文件,当我运行时调用一个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:\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
我的问题是:

  • 当我运行此程序时,将在位置E:\abc\Test中生成一个名为File1_12-2012csv.Lst的文件。我想要一个csv文件。 如果我硬编码,文件名(replace&MYPeriod by test)File1_test.csv将完美生成。为什么代码无法创建名为user has input..的文件

  • 它的输出创建了一个csv文件并从db中检索帐户,但它在顶部额外打印了两行。新查询和旧查询。如何重新定义代码,使其自动删除


  • 感谢你们的帮助。

    替换变量用于将它们与后面的任何字符分开。如果希望在字符串中也使用一个,则必须显式添加该终止:

    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.如何添加。?