2016-12-06 2 views
0

Dort eine Anforderung, wo ich versuche, einen Prozess in meinem Projekt zu automatisieren, wo in einem SQL für die tägliche Berichterstattung ausgeführt werden muss.Wie Parameter an SQL-Skripte über die Befehlszeile übergeben werden

sql sieht wie folgt aus: (Dies ist die einfachste Form, aber meine SQL ist 400 Zeilen, unten ist nur ein Beispiel, um die Ergebnisse zu erhalten).

test.sql

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

Ich wollte eine bat-Datei erstellen, die die sqlplus aufruft und die Daten über den Befehl prompt.Date wird automatisch berechnet und wird in der commmmand prompt selbst übergeben werden.

Ich habe die unten Befehlszeilen versucht:

sqlplus userid/[email protected]_name @test.sql DATE1 DATE2 

Aber das fordert mich immer noch die Daten für Datum 1 und das Datum einzugeben 2, die ich, dass automatisch von Argumenten abgeholt werden soll.

Könnten Sie mir bitte helfen, das oben genannte zu erreichen?

+0

Mögliche Duplikate von [Wie übergebe ich Argumente an ein PL/SQL-Skript in der Befehlszeile mit SQLPLUS?] (Http://stackoverflow.com/questions/18620893/how-doi-i-pass-arguments-to- a-pl-sql-script-on-command-line-with-sqlplus) – Rene

Antwort

2

Die Parameter, die von der Kommandozeile übergeben werden sind in SQLPLUS als & 1 und & 2.

select * from table 
where create_date between &1 and &2; 

Um Probleme mit Datum zu verhindern, dass Sie die Formatierung möchten Wechsel berücksichtigen, dass zu

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

Oder welches Datumsformat Sie auch verwenden möchten.

-1

Wenn Datum1 und Datum2 für die Angabe des Bereichs für einen einzelnen Tag (heute/gestern) verwendet werden, können Sie die Now() - Methode von SQL verwenden.

+0

Methode 'Now()' existiert nicht in Oracle –

+0

Mein schlechtes. Sie haben jedoch die Funktion CURRENT_DATE in ORALE, die JETZT entspricht. – xitter

Verwandte Themen