Ich habe ein Perl-Skript, das eine Anweisung mit Params 1,2,3,4 mit DBI-Schnittstelle vorbereitet. Die Prepare-Anweisung führt eine gespeicherte Prozedur mit 4 Parametern. Dann führt es eine foreach-Schleife und tut executePerl Ausführen von DBI Ausführen in Schleife
Wenn die Parameter nicht richtig sind, löst die gespeicherte Prozedur einen Fehler aus und die Ausführung schlägt fehl. Ich bin daran interessiert, eine Warnung auszudrucken und mit dem nächsten Satz von Parametern fortzufahren.
Nach dem ersten Ausführungsfehler für einen "ungültigen Parameter", bekomme ich "Versuch, eine neue Adaptive Server-Operation mit Ergebnissen anhängig zu starten" als errmsg in SQL für die nachfolgende Schleifeniteration ausführen.
foreach my $file (@filelist)
{
#.. get param1 , param2 , param3, param4 from $file
unless (dbh->execute($param1,$param2,$param3,$param4))
{
#print some warning
next;
}
}
Wie kann ich die Verarbeitung mit diesem Fehler fortsetzen?
Dies sind die Version I
bin mit>perl -MDBI -e 'DBI-> installed_versions;'
Perl : 5.010001 (x86_64-linux-thread-multi)
OS : linux (2.6.18-348.12.1.el5)
DBI : 1.609
DBD::Sybase : 1.15
DBD::Sponge : 12.010002
DBD::SQLite : 1.27
DBD::Proxy : install_driver(Proxy) failed: Can't locate RPC/PlClient.pm in @INC
DBD::Informix : 2013.0521
DBD::Gofer : 0.011565
DBD::File : 0.37
DBD::ExampleP : 12.010007
DBD::DBM : 0.03
I { RaiseError => 0, PrintWarn => 1, PrintError => 1 }
in der Verbindungs hinzugefügt, wie durch mekazu vorgeschlagen, (Der Code ist genau die gleiche wie bei Sie zu), aber es ist immer noch nicht helfen, den gleichen Fehler.
In foreach bekomme ich Erfolg, Iteration 1 kein Fehler
Iteration 2 gibt einen gespeicherten Prozedur Fehler
" Database execute failed. ERROR MESSAGE: Server message number=52001 severity=16 state=1 line=124 server=dev procedure=sp1 text=Data Error:Invalid parameter: P1
Iteration 3
Database execute failed. ERROR MESSAGE: OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (78) NUMBER = (51) Server dev, database dev Message String: Attempt to initiate a new Adaptive Server operation with results pending
Iteration 4
Database execute failed. ERROR MESSAGE: OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (78) NUMBER = (51) Server dev, database dev Message String: Attempt to initiate a new Adaptive Server operation with results pending
Haben Sie versucht, Ihre '$ dbh-> ausführen, um zu sorround ($ p1, p2 $ $ p3" , $ p4) 'mit' eval {$ dbh-> execute (...);} oder mache {#print irgendeine Warnung; next;} '? – Otterbein
Ich erhalte denselben Fehler - Datenbankausführung fehlgeschlagen. FEHLERMELDUNG: OpenClient-Nachricht : LAYER = (0) ORIGIN = (0) SEVERITY = (78) NUMBER = (51) Server dev, Datenbankentwickler Nachrichtenzeichenfolge: Versuch, eine neue Adaptive Server-Operation mit ausstehenden Ergebnissen einzuleiten – Sree
So beheben Sie diesen Fehler I Es ist unklar, ob das DBI oder SQL-Fehler ist – Sree