存储过程不知道有没有问题。我存储过程有一个输入参数,里面会根据条件执行不同的select语句,但查出结构大体相同。存储过程是肯定要用的,看似查询出的结果是很简单,但是里面判断很多,都写了200行左右,不是直接的select case when就能解决的。主要是不知道存储过程有没有返回值,没有定义output或者return的参数
是的。客户端是有查询出的结果的,上面的那张图就是客户端的效果。 测试代码的报错完整信息如下: com.microsoft.sqlserver.jdbc.SQLServerException: 该语句没有返回结果集。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:394) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:340) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:283) at com.msq.util.DBUtil.main(DBUtil.java:42)
CallableStatement statement = null;
for (String strings : files) {
statement = conn.prepareCall(sql1);
statement.setString(1, strings);
rst = statement.executeQuery();
while(rset.next()) {
System.out.println(rst.getString(1)+"-"+rst.getString(2));
}
}
statement.close();
改为这样试试
System.out.println(rst.getString(1)+"-"+rst.getString(2));
}
上面多打了个e
同样的结果,还是提示:该语句没有返回结果集。报错是在 rst = statement.executeQuery();
存储过程不知道有没有问题。我存储过程有一个输入参数,里面会根据条件执行不同的select语句,但查出结构大体相同。存储过程是肯定要用的,看似查询出的结果是很简单,但是里面判断很多,都写了200行左右,不是直接的select case when就能解决的。主要是不知道存储过程有没有返回值,没有定义output或者return的参数
是的。客户端是有查询出的结果的,上面的那张图就是客户端的效果。
测试代码的报错完整信息如下:
com.microsoft.sqlserver.jdbc.SQLServerException: 该语句没有返回结果集。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:394)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:340)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:283)
at com.msq.util.DBUtil.main(DBUtil.java:42)
2、把这个sql1写死(客户端执行的那段SQL脚本)看看情况
谢谢关注!问题解决了。是自己存储过程的代码不够严谨,对有问题的数据之前直接return的,现在输出的时候就没有结果了
谢谢关注!问题解决了。是自己存储过程的代码不够严谨,对有问题的数据之前直接return的,现在输出的时候就没有结果了