Ich bin verantwortlich für eine Aufgabe, die ich glaube, sollte einfach sein, aber wie ich es noch nie getan habe, habe ich einige Probleme damit. Ich habe erfolgreich ein EJB 3-Projekt mit EclipseLink erstellt, das eine Reihe gespeicherter Prozeduren aus einer Oracle-Datenbank aufrufen wird. Ich habe die Datenquelle korrekt konfiguriert, kann einfache gespeicherte Prozeduren und Funktionen verbinden und ausführen (ohne Parameter und einen Cursor zurückgeben); Ich bin jedoch derzeit nicht in der Lage, gespeicherte Prozeduren mit Parametern auszuführen.EclipseLink - Oracle Stored Procedure Anruf Neuling Problem
Ich verwende das EclipseLink Wiki als Referenz http://wiki.eclipse.org/Using_Basic_Query_API_(ELUG).
Der Code ist:
StoredProcedureCall call = new StoredProcedureCall();
call.setProcedureName("p_environment.startSession");
List<String[]> args = new ArrayList<String[]>();
args.add(new String[] { "user", "ae01403" });
args.add(new String[] { "application", "app_code" });
args.add(new String[] { "locale", "it_IT" });
for (String[] pair : args) {
call.addNamedArgumentValue(pair[0], pair[1]);
}
DataReadQuery query = new DataReadQuery(call);
for (String[] pair : args) {
query.addArgument(pair[0]);
}
Basierend auf der Datenbankdokumentation, da ich keinen Zugriff auf die Datenbank selbst haben, die Prozedur dauert 3 VARCHAR IN-Parameter des angegebenen Namens. Ich rufe dann die executeQuery-Methode für die aktive Sitzung auf, erhalte jedoch den Fehler "Falscher Typ oder Anzahl der Argumente". Was mache ich falsch? Jede Hilfe wird geschätzt.
EDIT: Die gespeicherte Prozedur Signatur gemäß Dokumentation ist:
p_environment.startSession(as_user IN VARCHAR2,
as_application IN VARCHAR2,
as_locale IN VARCHAR2);
Vielen Dank!
bearbeitet meinen Beitrag mit genauer Antwort :) – LaGrandMere