PDA

View Full Version : Löschen von Datensätzen per Java in DB2



steven_r
25-01-10, 17:01
Hallo @all,

ich habe ein Java PGM das von der AS400 auf einen SQL Server schreibt, das funktioniert auch super.

Nun soll ich aber jeden Satz den ich auf den SQL Server schreibe auf der AS400 löschen, geht auch bei kleineren Tabellen, bei größeren bekomme ich eine folgende Meldung (Limit on number of statements exceeded.) ist mir auch klar, ich darf nur 9999 Statements absezten.

Ich habe aber teilweise Tabellen mit mehreren 10000 Sätzen, wie kann ich das relativ schnell (systemseitig) lösen.

Gibt es eine möglichkeit das ich den Satz den ich im zugriff habe mit rs.next nach der Verarbeitung lösche?

Danke im voraus.
Steven_r

Fuerchau
25-01-10, 17:43
Hier hilft nur ein Prepared-Statement mit Parametermarkern "delete from mylib.mytable where key=?", das du ganz einfach dann immer wieder ausführst.
Ein ständiges Zusammenbauen mit Strings ist auch eher unperformant.

Das würde ich dir übrigens auch für die Insert's empfehlen.

PS:
Beachte noch die Commit-Einstellung in der AS/400-Verbindung, der Default ist nämlich *CHG. Beim Select macht das ja noch nichts, beim Delete bekommst du aber eine Excepten, wenn deine PF nicht journalisiert ist.
Wenn du mit einem Journal arbeitest, kannst du dich für AutoCommit (extrem langsam) oder Transaktionen entscheiden.

Delete würde ich auch nicht empfehlen, sondern eher ein Verarbeitungs-KZ.
Der SQL-Server ist nämlich nicht so sicher.
Was machst du nämlich, wenn die Daten weg sind ?
Bei Delete ist eine Wiederholung nicht möglich, es sei denn, die Daten können aus anderen Quellen wiederhergestellt werden.

steven_r
25-01-10, 18:16
Danke für die rasche Antwort, aber wenn ich das jedesmal absetze bekomme ich ja diese Meldung mit den maximalen Statements.

lg
Steven_r

Fuerchau
25-01-10, 19:29
Dann poste mal deinen Code (bevor ich das glaube).
Vielleicht erstellst du doch immer neue Statements und der gc kommt nicht dazu, die Ressourcen freizugeben ?