`
HeDYn
  • 浏览: 41167 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

jdbc 调用 sql server 的存储过程时“该语句没有返回结果集”的解决方法

阅读更多
在JDBC中调用SQL Server中的存储过程时出现如下异常:
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)



解决方法:在存储过程首行加上
SET NOCOUNT ON


环境:SQL Server 2000 sp4 + 官方2008驱动(sqljdbc4.jar)
分享到:
评论
4 楼 海漂大侠 2012-08-14  
niuka 写道
请问一下楼主,怎么加上这个命令,以及加在什么位置,能否把加好的存储过程的sql给我看一下。



create procedure getPath(@userid int)
as
SET NOCOUNT ON //加在as  和声明语句之间就可以了

declare @functionid int,@parentid int//声明变量

//下面就可以写存储过程语句了
3 楼 niuka 2012-07-27  
海漂大侠 写道
alter procedure getPath(@userid int)
as
SET NOCOUNT ON
declare @functionid int,@parentid int
…………………………………………………………
…………………………………………………………


谢谢您的帮助,问题总算解决了。
2 楼 海漂大侠 2012-07-25  
alter procedure getPath(@userid int)
as
SET NOCOUNT ON
declare @functionid int,@parentid int
…………………………………………………………
…………………………………………………………

1 楼 niuka 2012-07-23  
请问一下楼主,怎么加上这个命令,以及加在什么位置,能否把加好的存储过程的sql给我看一下。

相关推荐

    Java调用SQL Server的存储过程详解

     使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示: {call procedure-name}  作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中...

    sqlserver各版本jdbc驱动.zip

    sqlserver各版本驱动 DriverManager:负责...Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)

    sql server的jdbc驱动

    帮你实现微软的sql server的jdbc连接,有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问...

    JDBC如何实现对存储过程的调用

    本工程用于JDBC如何实现对存储过程的调用 本工程编码方式:GBK 参考博客网址:http://blog.csdn.net/gaohuanjie/article/details/34422903 须执行的SQL语句: CREATE DATABASE `test`; USE `test`; CREATE TABLE...

    自己封装的JDBC工具类源码

    1、执行sql语句返回单条查询结果; 2、执行查询语句sql返回结果集; 3、执行数据的插入,修改,删除; 4、执行批处理; 5、调用存储过程; 6、调用函数返回一个String,int结果; 7、调用过程返回游标并封装到...

    sqljdbc_8.2.2.0_chs.zip

    JDBC 通过调用其接口提供的方法, 提供了 Java 应用程序与各种数据库服务器之间的连接服务, 它支持 ANSI SQL- 92 标准, 实现了从 Java 程序内调用标准的 SQL 命令对数据库进行查询、插入、删除和更新等操作, 并...

    如何从 Java 存储过程将 JDBC ResultSet 作为 Ref Cursor 返回.doc

    本文档演示如何从 Java 存储过程将 JDBC ResultSet 作为 REF CURSOR 返回。JDBC ResultSet 是一个表示数据库的数据表,通常通过执行查询数据库的语句产生该表。REF CURSOR 是 PL/SQL 中相应的类型。Java 存储过程的...

    Spring Data JDBC与JDBC的区别

    JDBC规范   java.sql和javax.sql两个包中的类与接口(天龙八部): ... CallableStatement:调用存储过程  ResultSet:结果集,封装了多条记录  JDBC数据库连接池/Connection Pool  DBCP:apache tomcat内置  

    JDBC详解HTML-JDBC.pp

    本地协议纯java驱动程序:将JDBC调用直接转换成JDBC所使用的网络协议 2、JDBC操作基本流程: 1>.导入驱动:实例化时自动向DriverManager注册(DriverManager.registerDriver()) <1>.Class.forName(driver) <2>....

    JDBC笔记 JDBC笔记

    java.sql.Statement 用于执行静态SQL语句并返回其生成结果的对象。 java.sql.PreparedStatement 继承Statement接口,表示预编译的SQL语句的对象,SQL语句被预编译并且存储在PreparedStatement对象中。然后可以...

    JDBC 3.0数据库开发与设计

    4.2.5 SQL Server存储过程编程经验技巧 4.3 成批更新(BatchedUpdate) 4.3.1 成批更新所使用的对象 4.3.2 使用成批更新的实例 4.4 行集合对象 4.4.1 设计时行集合 4.4.2 运行时行集合 4.4.3 非标准JDBC API...

    JDBC事务处理机制探秘

    在auto-commit模式屏蔽掉之后,如果不调用commit()方法,SQL语句不会得到JDBC事务处理确认。在最近一次commit()方法调用之后的所有SQL会在方法commit()调用时得到确认。 1. public int delete(int sID) { 2. dbc =...

    JDBC编程代码示例

    基于MysqlJDBC编程代码示例,包括配置文件读取,连接对象的创建,查询,增加,修改,元数据的使用方法,图片数据数据库存储读取,存储过程的SQL创建语句和java使用存储过程进行增删改查的调用代码,还有可以更新结果...

    使用Java JDBC实现一个简单的数据库操作.txt

    在连接成功后,通过调用statement对象的executeQuery()方法执行了一条SQL查询语句,并将结果保存到了结果集对象中。最后遍历结果集,输出了每个用户的ID、姓名和电子邮件地址。在finally块中关闭了所有的资源。由于...

    深入剖析MyBatis SQL执行流程:从配置到查询结果的全程追踪

    本文深入分析了MyBatis执行SQL的整个流程,从...在此过程中,Executor组件发挥关键作用,它封装了JDBC操作,管理SQL语句的生成和查询缓存的维护。Executor根据配置可分为SimpleExecutor、ReuseExecutor

    mssql-jdbc-8.4.0.jre8.jar

    jdk1.8可使用的jdbc驱动... ...Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)

    jdbc基础和参考

    创建时不需要传递sql语句,但是执行时需要传递sql语句 2.如果涉及到动态参数的传递,必须使用字符串拼接 PreparedStatement: 1.创建时就需要传递sql语句,执行的时候不需要传递sql语句 2.如果涉及到动态参数...

    JDBC技术使用标准的 SQL 语言对数据库表中的数据进行访问,以及增删查改

    是一种用于 SQL 语句的 Java API,由一组类和接口组成,通过调用这些类和接口所提供的方法,可以使用标准的 SQL 语言来存取数据库中的数据,特别是可以访问存储在关系数据库里的数据。JDBC 可以用 Java 语言在各种...

    批量处理JDBC语句提高处理速度

     存储过程的最简单的形式就是包含一系列SQL语句的过程,将这些语句放在一起便于在同一个地方管理也可以提高速度。Statement 类可以包含一系列SQL语句,因此允许在同一个数据库事务执行所有的那些语句而不是执行对...

Global site tag (gtag.js) - Google Analytics