我正在处理需要调用Oracle存储过程以便更新某些记录的服务。该过程没有返回值。
我正在使用Spring Boot v2.1.3和Hibernate 5.3.6。
我试图像这样调用程序:
Object updatePaymentStatus(Integer cropYear, Integer weightTagNumber) throws Exception {
return em.createNativeQuery("CALL GMSAPPL.GMS_INTERFACE_JDE_PKG.UPDATEPAYMENTSTATUSBYWTNUMBER(:weightTagNumber, :cropYear)")
.setParameter("weightTagNumber", weightTagNumber)
.setParameter("cropYear", cropYear)
.getResultList();
但是,当我执行此操作时,我收到了SQLSyntaxErrorException: ORA-00900: invalid SQL statement
谁能解释为什么Hibernate认为这是无效的SQL语句?这正是我从Oracle调用它并即时执行本机查询的方式。
我也尝试过这种方式:
try(Connection conn = DriverManager.getConnection(url, "username", "password")) {
System.out.println("Connected to database");
CallableStatement cstmt = conn.prepareCall("{CALL GMSAPPL.GMS_INTERFACE_JDE_PKG.UPDATEPAYMENTSTATUSBYWTNUMBER(?, ?)}");
cstmt.setInt(1, weightTagNumber);
cstmt.setInt(2, cropYear);
return cstmt.execute();
}
我收到:SQLException: ORA-01403: no data found\nORA-06512: at \"GMSAPPL.GMS_INTERFACE_JDE_PKG\", line 359\nORA-06512: at line 1\n