Home » 2017 » Dezember

Archiv für den Monat: Dezember 2017

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.

–> StackOverflow-Artikel dazu