Zum Inhalt springen

Shell Script zur Ausführung vom SQL Script


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich bin neu in diesem Bereich und hoffe hier bei euch etwas Hilfe zu finden. :)

Ich muss ein Shell Skript anpassen, welches von einem anderen Shell Skript zwei Parameter übergeben bekommt. Anschließend meldet er sich bei der Oracle Datenbank an und führt einige SQL Skripte aus. Vor dem Ausführen der Skripte werden die beiden Parameter als Bindvariablen in Oracle hinterlegt.

Jetzt kommt mein kleines Problem: Bei einem SQL Skript muss eine Fallunterscheidung eingebaut werden. Er soll nur dann ausgeführt werden, wenn der Parameter2 einen bestimmten Wert (AKT) übergeben bekommen hat. Ansonsten soll er nicht ausgeführt werden.

Das Skript sieht im Moment in etwa so aus:


P1=$3 

P2=$4


sqlplus -s $1@$2 <<EOF    1>>$LOGDIR/$SessLogFile 2>&1

define date = $P1                

define p_name = $P2 

@"SQL_Skript1.sql"

@"SQL_Skript2.sql"

@"SQL_Skript3.sql"

exit


EOF
Ich habe mir überlegt die IF-Anweisung vor der Anmeldung in SQLPlus zu machen. D.h. mein Skript würde in etwa so aussehen:

P1=$3 

P2=$4


IF [$P2 == AKT]


 THEN

   sqlplus -s $1@$2 <<EOF    1>>$LOGDIR/$SessLogFile 2>&1

    define date = $P1                

    define p_name = $P2 

    @"SQL_Skript1.sql" 

    @"SQL_Skript2.sql"

    @"SQL_Skript3.sql"

   exit

 ELSE

   sqlplus -s $1@$2 <<EOF    1>>$LOGDIR/$SessLogFile 2>&1

    define date = $P1                

    define p_name = $P2 

    @"SQL_Skript2.sql"

    @"SQL_Skript3.sql"

   exit

FI

EOF

Leider scheint das Skript bei mir die IF - Anweisung zu ignorieren. Ich würde mich über Hinweise freuen.

Danke und viele Grüße,

Dietmar

Geschrieben

Hallo,

danke dir für den Hinweis. Ich habe das in einem Tutorium gesehen, dass Strings so vergliechen werden können. Ich habe es aber auch mit = usw. versucht. Irgendwie scheint er das zu ignorieren. Von der Logik sollte es funktionieren. :(

VG,

Dietmar

Geschrieben

ich habe jetzt mal dein Teil genommen und ein extra Skript erstellt. diesen dann im Putty ausgeführt und die IF Anweisung funktioniert. An dieser Stelle erstmal danke. Wenn ich jetzt die SQLPlus Zeile einbaue, dann kriege ich einen Syntax Fehler. Ich werde mal selber weiter schauen.

Danke und viele Grüße,

Dietmar

Geschrieben
Wenn ich jetzt die SQLPlus Zeile einbaue, dann kriege ich einen Syntax Fehler. Ich werde mal selber weiter schauen.

Joar. Wenn du sowas wie <<EOF machst, dann solltest das an der passenden Stelle auch wieder zugehen.

An deiner Stelle wuerde ich mit mktemp einfach eine blanke, leere Datei erstellen, dort die Anweisungen einstecken und das dann dem Binary uebergehen.

Geschrieben

hi

also ignorieren könnte er die if - Anweisung aus zwei Gründen:

a) if sollte nicht groß geschrieben werden - weiss ich aber nicht genau - habs bisher immer nur klein gesehen.

aber B) ist auf jeden Fall relevant. Und zwar die Syntax des Befehls 'test', der hier hinter den [ ] steckt. Und diese Syntax verlangt, dass nach [ und vor ] jeweils ein Leerzeichen kommt. Hab ich auch mal lange gesucht, bis ich das gefunden hatte ;)

hth

4psh

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...