SET NOCOUNT 使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。语法 SET NOCOUNT { ON | OFF }注释 当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft® SQL Server™ 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。权限 SET NOCOUNT 权限默认授予所有用户。示例 下例在 osql 实用工具或 SQL Server 查询分析器中执行时,可防止显示有关受影响的行数的信息。USE pubs GO -- Display the count message. SELECT au_lname FROM authors GO USE pubs GO -- SET NOCOUNT to ON and no longer display the count message. SET NOCOUNT ON GO SELECT au_lname FROM authors GO -- Reset SET NOCOUNT to OFF. SET NOCOUNT OFF GO
SET NOCOUNT 使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。语法 SET NOCOUNT { ON | OFF }注释 当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft® SQL Server™ 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。权限 SET NOCOUNT 权限默认授予所有用户。示例 下例在 osql 实用工具或 SQL Server 查询分析器中执行时,可防止显示有关受影响的行数的信息。USE pubs GO -- Display the count message. SELECT au_lname FROM authors GO USE pubs GO -- SET NOCOUNT to ON and no longer display the count message. SET NOCOUNT ON GO SELECT au_lname FROM authors GO -- Reset SET NOCOUNT to OFF. SET NOCOUNT OFF GO
刚做了个例子 create procedure whtest1 as select 'sdfds' as a into #yyy select * from #yyy drop table #yyy 然后在程序里调用放到datagrid里,没问题 是不是你的连接的游标类型的问题,server/client
呵呵,说法还真多!!!其实马可的就行!!create proc ... as set nocount on insert... select ... set nocount off
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。语法
SET NOCOUNT { ON | OFF }注释
当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft® SQL Server™ 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。权限
SET NOCOUNT 权限默认授予所有用户。示例
下例在 osql 实用工具或 SQL Server 查询分析器中执行时,可防止显示有关受影响的行数的信息。USE pubs
GO
-- Display the count message.
SELECT au_lname
FROM authors
GO
USE pubs
GO
-- SET NOCOUNT to ON and no longer display the count message.
SET NOCOUNT ON
GO
SELECT au_lname
FROM authors
GO
-- Reset SET NOCOUNT to OFF.
SET NOCOUNT OFF
GO
不过中间多少个Insert,但保证最后一句是select就肯定可以返回记录的
我想你是在select后还有其他代码,或者在select之前就有其他select或者提早return了。最好贴出你的存储过程代码。
create proc p_test
as
set nocount on
你的存储过程处理语句
set nocount off
go
我在一次指导学生演练时,发现了上述问题.不过我用的是VB.
如果你的表经过了修改,返回记录集就出错.不作修改,就不出错.是这样的吧.
你的ado连接代码有误.
provider(提供者)=sqloledb.1,会出现上述问题.
该为:provider(提供者)={sql server}.上述问题就消失了.VB 中是这样的.你试试.有问题再来.
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。语法
SET NOCOUNT { ON | OFF }注释
当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft® SQL Server™ 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。权限
SET NOCOUNT 权限默认授予所有用户。示例
下例在 osql 实用工具或 SQL Server 查询分析器中执行时,可防止显示有关受影响的行数的信息。USE pubs
GO
-- Display the count message.
SELECT au_lname
FROM authors
GO
USE pubs
GO
-- SET NOCOUNT to ON and no longer display the count message.
SET NOCOUNT ON
GO
SELECT au_lname
FROM authors
GO
-- Reset SET NOCOUNT to OFF.
SET NOCOUNT OFF
GO
在存储过程执行结束的时候已经没有该表
所以你返回不了结果集
如果要是在存储过程中想返回结果,用全局临时表把##tablename
create procedure whtest1 as
select 'sdfds' as a into #yyy
select * from #yyy
drop table #yyy
然后在程序里调用放到datagrid里,没问题
是不是你的连接的游标类型的问题,server/client
as
set nocount on
insert...
select ...
set nocount off
yujohny(踏网无痕):程序代码应该没问题,我执行其他不带Insert的存储过程都能成功,可能Delphi和VC用ADO方式执行存储过程机制不一样。
adinna(想写程序) :不是临时表的问题,我注释掉Insert部分就能用了。
1ssp(新来的): 是存储过程部分的原因,程序执行其他存储过程能成功。
set nocount on的问题,你加上就没事了.因为insert语句会产生影响行数的信息.所以影响了你程序的调用.
加上:
set nocount on
就可以关闭这个信息,相当于注释掉insert语句
set nocount on的问题,你加上就没事了.