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

use*_*017 6 windows oracle plsql oracle11g plsqldeveloper

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

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

测试.sql

select * from table
where create_date between &date1 and &date2;
Run Code Online (Sandbox Code Playgroud)

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

我尝试过以下命令行:

sqlplus userid/password@db_name @test.sql DATE1 DATE2
Run Code Online (Sandbox Code Playgroud)

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

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

Ren*_*ene 5

从命令行传递的参数在 SQLPLUS 中可用为 &1 和 &2。

select * from table
where create_date between &1 and &2;
Run Code Online (Sandbox Code Playgroud)

为了防止日期格式出现问题,您可能需要考虑将其更改为

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

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