如何通过命令行将参数传递给 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');
或您要使用的任何日期格式。
有一个要求,我试图在我的项目中自动化一个流程,其中 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');
或您要使用的任何日期格式。