首页 新闻 会员 周边 捐助

来看个简单存储过程 sq_executesql 的

0
悬赏园豆:10 [已解决问题] 解决于 2011-02-16 17:11

ALTER PROCEDURE [dbo].[messageCountByWhere]
@where varchar(8000) = ' 1=1 ',
@recordCount int output
AS
 SET NOCOUNT ON
 declare @sqlCount nvarchar(4000)
 set @sqlCount= 'SELECT @Count=count(-1) FROM [dbo].[message] WHERE ' +@where
 --print @sqlCount
 exec sp_executesql @sqlCount,N'@Count int output',@recordCount output 
 RETURN @@Error

 

count(-1)有啥意思 ? 还有 exec 中  N'@Count int output',@recordCount output  表示什么意思 ,  希望给你解释

程海的主页 程海 | 初学一级 | 园豆:11
提问于:2010-10-17 14:32
< >
分享
最佳答案
0

count(-1),count(1)等比count(*)的效率高.

收获园豆:10
changbluesky | 小虾三级 |园豆:854 | 2010-10-18 08:57
其他回答(2)
0

count(-1) 这个还真没有见过

output 是输入输出参数

 

exec sp_executesql @sqlCount,N'@Count int output',@recordCount output

执行@sqlCount  并且把@count 的值赋给@recordCount

写代码的小2B | 园豆:4377 (老鸟四级) | 2010-10-17 16:11
嗯,现在我知道count(-1)是什么了 它相当于 count(*)
支持(0) 反对(0) 程海 | 园豆:11 (初学一级) | 2010-10-17 16:16
0

count(-1)表示和count(1)一样,统计行数,exec sp_executesql @sqlCount,N'@Count int output',@recordCount output表示:执行sp_executesql的存储过程,后面是参数,然后返回Count和recordCount

dodohua | 园豆:1037 (小虾三级) | 2010-10-18 15:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册