如何通过命令行将参数传递给 sql 脚本

How to pass parameters to sql scripts via command line

有一个要求,我试图在我的项目中自动化一个流程,其中 sql 需要 运行 用于每日报告。

sql 如下所示:(这是最简单的形式,但我的 sql 有 400 行,下面只是获得结果的示例)。

test.sql

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

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

我试过以下命令行:

sqlplus userid/password@db_name @test.sql DATE1 DATE2

但这仍然提示我输入日期 1 和日期 2 的日期,我希望它们自动从参数中选取。

你能帮我实现上述目标吗?

如果你的 date1 和 date2 被用于给出一天的范围(today/yesterday),你可以使用 SQL.

的 Now() 方法

从命令行传递的参数在 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');

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