如何在Java中打印Statement(CallableStatement)?

20 java sql oracle jdbc

如何打印此OracleCallableStatement?

   ocstmt = (OracleCallableStatement) connection.prepareCall("{?= call 
            package.method(id => ?, name=>?)}");
   ocstmt.registerOutParameter(1, OracleTypes.CURSOR);            
   ocstmt.setInt(2, obj.getId());
   ocstmt.setString(3, obj.getName());
   ocstmt.execute();
   resultSet = ocstmt.getCursor(1);
Run Code Online (Sandbox Code Playgroud)

我的意思是我怎么知道什么查询进入数据库,我该如何打印查询?因为有时它会给我一些错误,比如"错误的类型",这就是为什么我要查看这个查询

Hos*_*eon 5

您正在使用log4j吗?

如果是这样,请添加如下所示的sql记录器。

log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
Run Code Online (Sandbox Code Playgroud)

如果使用的是ibatis之类的ORM框架,则可以添加如下所示的其他记录器。

log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
Run Code Online (Sandbox Code Playgroud)


duf*_*ymo 1

您无法通过打印Statement 来获取SQL。

您发布的示例是触发错误的“有时”之一吗?

为什么必须将其放入 OracleCallableStatement 中?调用的哪一部分不是标准的 CallableStatement?