A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-杨鹏立 高级黑马   /  2013-3-2 00:24  /  1120 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马-杨鹏立 于 2013-3-2 00:39 编辑

ALTER PROCEDURE [dbo].[GetCaseContentPageDataOutRowPageCount2]
(
@PageIndex int = 1,--当前页数
@PageSize  int = 4,--每页大小
@strKey   nvarchar =N'a',
@RowCount int output,--总行数(传出参数)
@PageCount int output--总页数(传出参数)
)
AS
begin
        DECLARE @sql NVARCHAR(max)
        select @RowCount =COUNT(FCaseChildId),@PageCount=CEILING((COUNT(FCaseChildId)+0.0)/@PageSize) FROM TCaseContent where FImagDescribe like (N'''%'+@strKey+'%''')  错误的   应改为N'%'+@strKey+'%'
        SET @sql='SELECT TOP '+LTRIM(str(@PageSize))+' * FROM TCaseContent where  FImagDescribe like N'+'''%'+@strKey+'%'''+' and FCaseChildId not in(select top '+LTRIM(str((@PageIndex-1)*@PageSize))+' FCaseChildId from TCaseContent where FImagDescribe like N'+'''%'+@strKey+'%'' )'
        print @sql
        EXEC(@sql)
end
declare @RC int,@Pc int
exec GetCaseContentPageDataOutRowPageCount2 1,10,N'e',@RC output,@PC output
select @RC,@PC
执行结果为


去掉 (where FImagDescribe like N'''%'+@strKey+'%''') 后 select @RowCount =COUNT(FCaseChildId),@PageCount=CEILING((COUNT(FCaseChildId)+0.0)/@PageSize) FROM TCaseContent

结果为


为什么我加where后输出参数不能用了呢??什么情况??????   额.....额...熬夜太晕了...多了分号居然不知道where FImagDescribe like N'''%'+@strKey+'%'''   改为like N'%'+@strKey+'%'这样就解决了   我在存储过程中拼接字符串花的时间比较多有个地方值得注意.... N'+'''%'+@strKey+'%'''+这里拼接得注意分号   









1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马