2016-07-27 14 views
0

私はreport.sqlというSQLスクリプトを呼び出すkshスクリプトを持っています。シェルスクリプトからSQLスクリプトにパラメータを渡す

$ORACLE_HOME/bin/sqlplus swb/[email protected] @$reportHome/report.sql 

現在、このSQLスクリプトはデータベースからsysdateのデータを取得しています。

SQLスクリプトの入力として日付を渡して、sysdateではなくその日付に対応するデータを選択したいとします。

kshからSQL * Plusに日付を渡すにはどうすればよいですか?

答えて

0

With substitution variables; start@と同じです。日付を渡し、その後

where some_col > to_date('&1', 'YYYY-MM-DD') 

と:あなたがそれを変更します

where some_col > trunc(sysdate) 

あなたのレポートが含まれているSQLを示したが、いくつかの時点で想定していないあなたのような何かを持っています文字列は同じ形式でコマンドラインで:

$ORACLE_HOME/bin/sqlplus swb/[email protected] @$reportHome/report.sql 2016-07-27 

あなたが渡した値。 2016-07-27は、最初の位置パラメータであるため、&1を使用して置換変数として参照できます。これはSQLで参照するときに単一引用符で囲む必要がある文字列です。それは文字列なので、日付に変換する必要があります。渡す文字列の形式は、to_date()関数で指定した形式と一致する必要があります。

また、月の名前を渡すことに注意してください。ある時点で言語の問題が発生する可能性があります。理想的には、あいまいではない形式を使用してください。私はISO形式のYYYY-MM-DDを使用しましたが、そのままにしておけば、a date literalを使用することもできます。これは、SQLエンジンによって解釈される前にSQL * Plusによって行われます。

関連する問題