Frage

Ich brauche einen richtig formatierte Datum Vergleich WHERE-Klausel zu einem Programm auf der Kommandozeile in bash zu senden.

Wenn es im Inneren des aufgerufenen Programms erhält, sollte die WHERE-Klausel für Oracle gültig und sollte wie folgt aussehen genau:

highwater>TO_DATE('11-Sep-2009', 'DD-MON-YYYY')

Der Datumswert ist in einer Variablen. Ich habe eine Vielzahl von Kombinationen von Zitaten und Schrägstrichen versucht. Anstatt das Problem zu verwirren und Beispiele für meine Fehler geben, ich hoffe auf eine unberührte genaue Antwort von dreck unbefleckt.

Wenn ich es in Perl schreiben war, die Zuordnung würde ich so aussehen denken:

$hiwaterval = '11-Sep-2009';
$where = "highwater>TO_DATE(\'$hiwaterval\', \'DD-MON-YYYY\')";

Wie erreiche ich den gleichen Effekt in der Bash?

War es hilfreich?

Lösung

hiwaterval='11-Sep-2009'

where="highwater > TO_DATE('$hiwaterval', 'DD-MON-YYYY')"

optional hinzufügen „Export“ vor dem endgültigen Variable Einstellung, wenn es sichtbar ourside zu sein die aktuell Shell ist.

Andere Tipps

Haben Sie versucht, die Verwendung von zwei Ticks verwenden? Wie High-Water> TO_DATE ( '' 11-Sep-2009 '', '' DD-MON-YYYY ''). Nur ein Vorschlag. Ich habe es nicht ausprobiert.

Sie können die zuweisen where-Klausel wie folgt:

export WHERECLAUSE=`echo "where highwater >TO_DATE('11-Sep-2009', 'DD-MON-YYYY')"`

(mit Backticks um die Echo-Anweisung - sie zeigen nicht hier in meinem Lektor up ...)

, die arbeitet mit einem Shell-Skript der Form:

sqlplus /nolog <<EOS
connect $USERNAME/$PASSWD@$DB
select * from test $WHERECLAUSE
;
exit
EOS
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top