Hallo,

es ist möglicherweise für den SQL Java Stub verwirrend, dass du die Methode mit dem Klassennamen identisch hast, das riecht nach Konstruktor, ist aber keiner; ich habe das allerdings noch nicht gemacht und rate auch davon ab.
Java stored Procedures führen dazu in jedem Serverjob, der sowas verwendet eine JVM zu starten und in jedem lokalen Job, der das mit COBOL/RPG via SQL verwendet ebenfalls. Da freut sich allenfalls IBM über die Hardware, die man dafür braucht, aber der Anwender ärgert sich, weil das trotzdem nicht brummt und der Programmierer ärgert sich, weil das nur fast funktioniert, zumindest, wenn man Voraussetzungen an die JVM hat.
Was soll die stored Procedure denn machen? da gibt es sicher was besseres1

mfg

Dieter Bender

Zitat Zitat von HeisigA
Hallo,
ich versuche eine Java Stored Procedure aufzurufen. Im ersten Schritt
habe ich ein kleines Java Programm erstellt.
Code:
 public class JDummy {
	public static void main(String[] args) {
		System.out.println("... call method JDummy");
		JDummy();
		System.out.println("... back");
	}
	public static void JDummy() {
		System.out.println("... inside method");
	}
}
Kompiliert und nach /QIBM/UserData/OS400/SQLLib/Function
kopiert. Die main-Methode und println sind einfach nur zum Testen.
Als nächstes registriere ich die Methode mit:
Code:
CREATE PROCEDURE JDummy()
LANGUAGE JAVA
PARAMETER STYLE JAVA
NOT FENCED
EXTERNAL NAME 'JDummy.JDummy'
Das ganze habe ich auch über iSeries Navigator probiert. Beim Aufruf
über Navigator oder mittels STRSQL call QGPL/jdummy() kriege ich
Fehlermeldungen meine EXTERNAL NAME Klausel stimmt nicht, aber was?.
Warum funktioniert das nicht? Die Vorgehensweise ist
aus dem redbook
'Stored Procedures, Triggers and User Defined Functions on DB2 Universal
Database for iSeries'
entlehnt.

Gruß Andreas