Lambda mit mehreren parametern – Comparator
new Comparator<HealthCheckPosition>(){ @Override public int compare(HealthCheckPosition o1, HealthCheckPosition o2) { return DateTimeComparator.getDateOnlyInstance().compare(o1.getInstrument().getRelevantExpirationDate(), o2.getInstrument().getRelevantExpirationDate()); } };
Als Lambda:
(Comparator<HealthCheckPosition>) (o1, o2) -> DateTimeComparator.getDateOnlyInstance().compare(o1.getInstrument().getRelevantExpirationDate(), o2.getInstrument().getRelevantExpirationDate());
Trap: Multithreading: Create Thread but it has no context
Often a newly created Thread has no access to some context because this is defined in the environment (e.g. Server Container) as being thread local.
Feld-Wert via Reflection setzen
With Spring:
org.springframework.test.util.ReflectionTestUtils#setField(java.lang.Object, java.lang.String, java.lang.Object)
Pure Java:
Person person = new Person(); Class<?> c = person.getClass(); Field f = c.getDeclaredField("name"); f.setAccessible(true); f.setBoolean(person, "Hans");
PL/SQL für Support-Scripts für DB-Änderungen
Problem:
Dem Produktions-Support eine sequenz von SQL Statements übergeben, bei der der Supporter über die SQL-Statements hinweg IDs propagieren muss?
Dabei verhindern, dass aufs Versehen zu viel gelöscht wird?
Lösung:
PL/SQL-Prozedur erstellen. Diese übernimmt das Propagieren der IDs. Die Gefahr des Vertippens ist vielfach kleiner, denn es muss nur die Prozedur kopiert werden. Diese kompiliert nicht, wenn beim kopieren etwas schief läuft.
Die PL/SQL-Prozedur kann einfach so in die SQLPlus-Konsole kopiert werden.
Links:
Weitere Links:
PLSQL Anfänger-Fallen/Tipps
‚/‘ zum Aktivieren am schluss der Stored Procedure, um diese zu aktivieren
Am schluss der Stored Procedure Definition mus ein auf einer neuern Zeile ein ‚/‘ angefügt werden, um diese im DB System auch zu aktivieren.
PLSQL Stored Procedures aufrufen:
execute meine_stored_procedure(‚parameterwert‘)
Parameterwert falls String in Hochkommas.
Input parameter von Stored Procedures sind immer ohne Längenangabe
varchar2(100) ist als Input-Parameter einer Stored Procedure falsch. Schreibe stattdessen: varchar ohne Längenangabe. Die Länge wird intern auf ein Maximum gesetzt.
Ouput ist nicht sichtbar!
Das problem ist dass der DBMS-Output nicht eingeschaltet ist. Mache das mit diesem Kommando:
SET
SERVEROUTPUT
ON
Compilierfehler werden nicht angezeigt
Symptom: Eine Stored Procedure wird kompiliert und einzig und allein diese Fehlermeldung erscheint: ORA-24344: success with compilation error
–> Die Kompilierfehler können angezeigt werden, indem SHOW ERRORS an die zu kompilierende Stored Procedure angefügt wird. Einfach nach dem „END;“ der stored Procedure anfügen, zusammen mit derselbigen markieren und abschicken.