2016-12-06 212 views
0

有一个要求,我试图在我的项目中自动执行一个需要运行sql以进行日常报告的过程。 (这是最简单的形式,但我的sql是400行,下面只是获得结果的一个示例)。如何通过命令行将参数传递给sql脚本

TEST.SQL

select * from table 
where create_date between &date1 and &date2; 

我想创建一个调用sqlplus中并将通过命令prompt.Date会自动计算日期,将在commmmand提示本身传递一个bat文件。

我已经试过以下命令行:

sqlplus userid/[email protected]_name @test.sql DATE1 DATE2 

但仍然提示我输入我想是从参数自动拾取日期1和日期2日期。

请问您能否帮助我实现上述目标?

+0

可能的重复[如何将参数传递给SQLPLUS命令行上的PL/SQL脚本?](http://stackoverflow.com/questions/18620893/how-do-i-pass-arguments-to- a-pl-sql-script-on-command-line-with-sqlplus) – Rene

回答

2

正在从命令行传递的参数在sqlplus可作为& 1和2 &

select * from table 
where create_date between &1 and &2; 

为了防止日期问题,格式化你可能要考虑改变,为了

select * from table 
where create_date between to_date('&1','DD-MM-YYYY') and to_date('&2','DD-MM-YYYY'); 

或者您想使用的任何日期格式。

-1

如果您的date1和date2用于给出单日(今天/昨天)的范围,则可以使用SQL的Now()方法。

+0

Oracle中不存在Now()' –

+0

我的不好。尽管如此,您在oracle中的CURRENT_DATE函数等同于NOW。 – xitter

相关问题