Java/Oracle创建的存储过程无效,没有SQLExceptions

Java/Oracle创建的存储过程无效,没有SQLExceptions,java,oracle,java-stored-procedures,Java,Oracle,Java Stored Procedures,我有以下创建存储过程的Java代码。为了测试它,我故意将无效sql传递给它: public void createStoredProcedure(@NotNull final StoredProcInfo storedProcInfo, @NotNull final ColumnInfoFactory columnInfoFactory, @NotNull final Connection con) { Statement createProcStmt = null; try {

我有以下创建存储过程的Java代码。为了测试它,我故意将无效sql传递给它:

public void createStoredProcedure(@NotNull final StoredProcInfo storedProcInfo, @NotNull final ColumnInfoFactory columnInfoFactory, @NotNull final Connection con) {
    Statement createProcStmt = null;
    try {
      List<String> parameterDefinitions = Lists.newArrayList();
      for (StoredProcParmInfo parmInfo : storedProcInfo.getInParameters()) {
        parameterDefinitions.add(columnInfoFactory.generateParameterDefinition(parmInfo));
      }
      for (StoredProcParmInfo parmInfo : storedProcInfo.getOutParameters()) {
        parameterDefinitions.add(columnInfoFactory.generateParameterDefinition(parmInfo));
      }
      String createProcSql = String.format("CREATE Procedure %s (%s) AS BEGIN %s END;", storedProcInfo.getName(), StringUtils.join(parameterDefinitions.iterator(), ","), storedProcInfo.getBody());
      createProcStmt = con.createStatement();
      createProcStmt.execute(createProcSql);
    } catch (Exception e) {
      throw new RuntimeException(e);
    } finally {
      Closer.close(createProcStmt, logger);
    }
  }
public void createStoredProcedure(@NotNull final StoredProcInfo StoredProcInfo、@NotNull final ColumnInfoFactory ColumnInfoFactory、@NotNull final Connection con){
语句createprocsmt=null;
试一试{
List parameterDefinitions=Lists.newArrayList();
对于(StoredProcParmInfo parmInfo:storedProcInfo.getInParameters()){
add(columnInfoFactory.generateParameterDefinition(parmInfo));
}
对于(StoredProcParmInfo parmInfo:storedProcInfo.getOutParameters()){
add(columnInfoFactory.generateParameterDefinition(parmInfo));
}
String createProcSql=String.format(“将过程%s(%s)创建为开始%s结束;”,storedProcInfo.getName(),StringUtils.join(parameterDefinitions.iterator(),“,”),storedProcInfo.getBody());
createProcStmt=con.createStatement();
createprocsmt.execute(createProcSql);
}捕获(例外e){
抛出新的运行时异常(e);
}最后{
close.close(createprocsmt,logger);
}
}
该方法成功执行。当我查看数据库时,我看到创建了一个存储过程,但被标记为无效对象:

错误在于程序主体中预期会出现INTO子句:


为什么在执行创建过程的代码时没有抛出SQLException?这是Oracle驱动程序设置吗?我在网上搜索过,但没有找到任何有用的信息。

字符串
createProcSql
的最终值是多少?创建或替换过程系统。TestProc14460693508460000(s IN NUMBER,out_cursor out ACTEK_TYPES.ref_cursor)作为从producer开始选择*;结束;