【问题标题】:How to pass parameters to sql scripts via command line如何通过命令行将参数传递给sql脚本
【发布时间】:2017-04-20 18:08:35
【问题描述】:

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

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

test.sql

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

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

我试过下面的命令行:

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

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

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

【问题讨论】:

标签: windows oracle plsql oracle11g plsqldeveloper


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 方法Now()在Oracle中不存在
    • 我的错。不过,您在 oracle 中有 CURRENT_DATE 函数,相当于 NOW。
    猜你喜欢
    • 2012-06-19
    • 2013-10-11
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 2013-10-22
    • 2016-12-19
    • 1970-01-01
    相关资源
    最近更新 更多