Zitat Zitat von Fuerchau Beitrag anzeigen
Soweit ich weiß, werden in Service-Programmen keine *INZSR-Routinen aufgerufen, eine globale Datei wird also ggf. nicht automatisch geöffnet.

Desweiteren würde ich dir ein SQLRPGLE-Serviceprogramm empfehlen, so dass SQL das Öffnen und ggf. offen halten (ODP) übernimmt, ausserdem kannst du direkt mit SELECT ... INTO ... arbeiten.

Bei der Verbindung gibst du in der Url die Default-LIB an:
url = jdbc:as400://MYSYS/MYLIB
Hallo
Zunächst mal vielen Dank für die Hilfe,
Ich habe das nun so gemacht und es funktioniert:

public void beispielMitDateienObjektbezeichnung() throws ClassNotFoundException, SQLException {


// Connection Variables
String AS400_ADDRESS = "xxx";
String AS400_USERNAME = "xxx";
String AS400_PASSWORD = "xxx";
String AS400_LIBRARY_FILES = "STAMDAT";
String AS400_LIBRARY_PROCEDURES = "STAMOBJ";

// START: Connection Block
Class.forName("com.ibm.as400.access.AS400JDBCDrive r");
try {
// Aufrufen der Standard Bilbiothek sollte hier immer die STAMDAT sein, denn sonst kann man bei den STORED Procedures auf Dateien in STAMDAT nicht darauf zugreifen !!!!
the400 = DriverManager.getConnection("jdbc:as400://" + AS400_ADDRESS + "/" + AS400_LIBRARY_FILES, AS400_USERNAME, AS400_PASSWORD);
System.out.println("Connection successful!");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

// END: Connection Block

try{

// START: Call the Stored Procedure

// getBet mit 5 mal inout Parametern numerisch und alpha mit Dateien:
CallableStatement cstmt = the400.prepareCall("{CALL " + AS400_LIBRARY_PROCEDURES + ".SP_GETBEZ(?, ?, ?, ?, ?)}",
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

System.out.println(cstmt.toString());

Die Sache mit dem SQLRPGLE-Serviceprogramm:

Dazu muss man doch auf der iSeries einiges an Sourcen schreiben bzw. reinkopieren, damit man das ausführen kann, oder ? (laut hier im Forum und Google), bzw. was bringt das denn genau ???


Lg
Hannes