2016-04-11 9 views
1

Ich wurde beauftragt, einen Vorfall in jemand anderen Anwendung zu lösen.Ausnahme von Anruf mit gespeicherter Prozedur iBATIS

Aber die Anwendung verwendet eine sqlMap und Stored-Prozedur mit iBATIS und ich habe noch nie damit gearbeitet.

Dies ist, was ich bisher:

public void createItemInDb() { 

    try { 
     System.out.println("status: " + this.getStatus()); 
     System.out.println("weight: " + this.getWeight()); 
     System.out.println("node name: " + this.getNodeName()); 
     System.out.println("node ui: " + this.getNodeUi()); 

     SqlMapClient sqlMap = AppSqlMapClient.getSqlMapInstance(); 
     sqlMap.queryForObject("createItem", this); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} 

// sqlMap in XML-Datei

<parameterMap class="item" id="createItemMap"> 
    <parameter property="nodeName" jdbcType="VARCHAR" mode="IN" /> 
    <parameter property="status" jdbcType="INTEGER" mode="IN" /> 
    <parameter property="weight" jdbcType="INTEGER" mode="IN" /> 
    <parameter property="nodeUi" jdbcType="INTEGER" mode="INOUT" /> 

</parameterMap> 

<procedure id="createItem" parameterMap="createItemMap"> 
    {call CREATEITEM (?,?,?,?)} 
</procedure> 

ich diese Ausnahme habe:

--- The error occurred while executing query procedure. 
--- Check the {call CREATEITEM (?,?,?,?)}. 
--- Check the SQL Statement (preparation failed). 
--- Cause: java.sql.SQLException: [SQL0204] CREATEITEM in *N type *N not found. 
Caused by: java.sql.SQLException: [SQL0204] CREATEITEM in *N type *N not found. 
     at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:185) 
     at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:104) 
     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:565) 
     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:540) 
     at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106) 
     at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:84) 

ich nicht einmal verstehen was dieser Teil bedeutet:

CREATEITEM in * N Typ * N nicht gefunden.

Wofür steht * N?

Wo finde ich die gespeicherten Prozeduren? CREATEITEM kann nirgendwo anders in den Anwendungsdateien gefunden werden?

Thnx

Antwort

0

Die gespeicherte Prozedur in der Datenbank ist, müssen Sie mit einem Datenbank-Client eine Verbindung zur Datenbank und den Code der gespeicherten Prozedur überprüfen (vielleicht ist es PL/SQL-Code).

Der Fehler "CREATEITEM in * N Typ * N nicht gefunden." Vielleicht wird dies durch den Rückgabetyp der gespeicherten Prozedur verursacht. Bist du sicher, dass es eine ganze Zahl ist?

+0

Vielen Dank für Ihre Antwort. Jemand in der IT-Abteilung hatte es geschafft, alle gespeicherten Prozeduren zu löschen. Dies war der Grund für die Ausnahme und warum konnte ich es nirgends finden. Zum Glück hatten wir eine neue Unterstützung und es ist jetzt alles gelöst. –

+0

Gut! Problem gelöst! ;) – TeoVr81

Verwandte Themen