Benutzer mit den meisten Antworten
Powershell - Arrayvergleich gibt komischen Wert

Frage
-
Hallo!
Ich habe folgenden Code
#Empty Table $sql = "delete from table_a; commit; " $sql | sqlplus user/$userpw@$DB #Prüfung ob wirklich gelöscht $sql = "select count(*) from table_a;" $sqlresult = sqlquery "user" $userpw $DB $sql $result=$sqlresult[0] if ($result -ne 0) { write-log "[ERROR:] Not all user-records deleted : $result" exit } else {write-log "[INFO:] Table is empty : $result"}
Es geht einfach darum, dass ich eine Tabelle leere und sie dann mittels eines Count(*) auf den Inhalt prüfe. (sqlquery ist eine Funktion aus einer eigenen Libary, die mir das Auführen dieser SQL-Statements erleichtert).
Mit dem Debugger habe ich nun schon rausgefunden, dass die Werte des Count (* ) brav in das Array gespeichert und von da auch in die Variable $result übernommen werden.
Sobald ich aber in den Vergleich gehe, springt er mir in die ERROR: Zeile und als $result wird ein E ausgegeben. Ich habe keinen Plan warum er das macht. Wird die Variable irgendwie falsch belegt?
Antworten
-
Hallo,
sry fürs späte antworten. Nein leider nicht. War auch schon auf die Idee gekommen.
Aber ich habs soeben für mich selber gelöst:
Ich habe mir mal die Mühe gemacht, das komplette Array auszugeben. Denn das E ist nur der Anfang von dem Wort Exception ... . Raus kam ein Datenfehler, der wegen dem ";" am Ende des SQLs entstanden ist. Ich könnt mir selber an den Kopf schlagen! Man sollte die eigenen Libs halt schon kennen.
$sql = "select count(*) from table_a;"
Meine Lektion: Arrays bei einem nicht erwarteten Ergebnis komplett ausgeben, und nicht nur einige ausgewählte Felder.
Aber danke für eure Hilfe!- Als Antwort vorgeschlagen Peter Kriegel Dienstag, 13. November 2012 13:20
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 13. November 2012 14:07
Alle Antworten
-
Hallo, ich würde das so machen:
#Empty Table $sql = "delete from table_a; commit; " $sql | sqlplus user/$userpw@$DB #Prüfung ob wirklich gelöscht $sql = "select count(*) from table_a;" $sqlresult = @(sqlquery "user" $userpw $DB $sql) if (($sqlresult.count) -gt 0) { write-log "[ERROR:] Not all user-records deleted : $result" exit } else {write-log "[INFO:] Table is empty : $result"}
Viele Grüße
Frank
-- Frank Röder http://blog.iteach-online.de --
-
Hallo,
hat der Tipp von Frank weitergeholfen?
Gruss,
RaulRaul Talmaciu, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Hallo,
sry fürs späte antworten. Nein leider nicht. War auch schon auf die Idee gekommen.
Aber ich habs soeben für mich selber gelöst:
Ich habe mir mal die Mühe gemacht, das komplette Array auszugeben. Denn das E ist nur der Anfang von dem Wort Exception ... . Raus kam ein Datenfehler, der wegen dem ";" am Ende des SQLs entstanden ist. Ich könnt mir selber an den Kopf schlagen! Man sollte die eigenen Libs halt schon kennen.
$sql = "select count(*) from table_a;"
Meine Lektion: Arrays bei einem nicht erwarteten Ergebnis komplett ausgeben, und nicht nur einige ausgewählte Felder.
Aber danke für eure Hilfe!- Als Antwort vorgeschlagen Peter Kriegel Dienstag, 13. November 2012 13:20
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 13. November 2012 14:07