Ich versuche, eine gespeicherte Oracle-Prozedur auszuführen, und die Ergebnisse zu einem POJO, mit mybatis/spring mit Anmerkungen (d. H. Nicht XML). Die Ein-/Ausgänge für die gespeicherte Prozedur sind:führen Sie Oracle gespeicherte Prozedur mit MyBatis/Spring und Parse-Ergebnisse zu einem POJO
P_INPUT VARCHAR2 IN
P_OUTPUT VARCHAR2 OUT
P_COUNT BINARY_INTEGER OUT
Und die POJO sieht wie folgt aus:
public class MyRecord {
private String output;
private Integer count;
// getters and setters...
}
Das Snippet in this example, die sagt, es ist für Oracle, funktionierte perfekt für mich gegen eine MySQL gespeichert Verfahren. Allerdings, wenn ich versuchte, die folgende für eine Oracle gespeicherte Prozedur auszuführen:
@Select(value= "{ CALL my_user.some_package.my_proc('${input}') }")
@Options(statementType = StatementType.CALLABLE)
@ResultType(MyRecord.class)
@Results({
@Result(property="output", column="P_OUTPUT"),
@Result(property="count", column="P_COUNT"),
})
MyRecord parseMyInput(@Param("input") String input);
... es die folgenden Fehler warf:
bad SQL grammar []; nested exception is java.sql.SQLException: ORA-06550
PLS-00306: wrong number or types of arguments in call to 'my_proc'
PL/SQL: Statement ignored
Von der Fehlermeldung, es klingt wie die Zeichenfolge übergeben werden zu der Funktion möglicherweise inkompatibel mit Oracle VARCHAR2
, oder ich sende irgendwie mehr als ein Argument. Die Zeichenfolge, die ich an die Funktion übergebe, ist übrigens (12345)
.
Können Sie sehen, was ich falsch mache?
Es ist eine Oracle-Prozedur, also müssen Sie auch diese Parameter übergeben. Es funktioniert als Referenz. Es wäre etwa so: '{CALL my_user.some_package.my_proc ('$ {input}', '$ {out1}', '$ {out2}'}} Aber ich habe keine Idee, wie ich es auf MyBatis machen soll Anmerkungen. –
Vielleicht würde Ihnen das helfen: http://stackoverflow.com/questions/9215784/java-mybatis-stored-procedure-call-with-out-parameters –
Eine andere, die sogar Ihre Frage dupliziert: http: // stackoverflow. com/questions/24910795/mybatis-annotations-zu-call-stored-procedure-and-get-out-params –