2016-12-30 5 views
0

Ich habe eine Funktion, die zwei String-Eingänge empfängt und gibt einen String-Ausgang, nennen wir es ‚x‘, ich versuche, diese Funktion auf einer jsp Webseite zu nennen, ich habe getan:Funktion x ist kein Verfahren oder ist nicht definiert

String jobquery = "{call x(?, ?)}"; 
CallableStatement callStmt = conn.prepareCall(jobquery); 

callStmt.registerOutParameter(1, OracleTypes.NVARCHAR); 
callStmt.setString(1, "hello"); 
callStmt.setString(2, "world"); 
callStmt.execute(); 

Welche gibt diesen Fehler:

java.sql.SQLException: ORA-06550: line 1, column 7: PLS-00221: 'x' is not a procedure or is undefined ORA-06550: line 1, column 7: PL/SQL: Statement ignored

Und ich bin wie, ja ich weiß, es ist kein Verfahren, es ist eine Funktion! Aber warum denken sie, dass es ein Verfahren ist? Und wie soll ich meinen Code ausführen?

Antwort

3

Sie erhalten diesen Fehler, weil Sie sind versuchen, eine Prozedur anstelle einer Funktion aufzurufen, weil Sie keine Rückmeldung Argument angegeben haben.

Sie benötigen einen Platzhalter für den Rückgabewert; Ihre Parameternummern müssen konsistent sein:

String jobquery = "{ ?=call x(?, ?) }"; 
CallableStatement callStmt = conn.prepareCall(jobquery); 

callStmt.registerOutParameter(1, OracleTypes.NVARCHAR); 
callStmt.setString(2, "hello"); 
callStmt.setString(3, "world"); 
callStmt.execute(); 
Verwandte Themen