当前位置: 代码迷 >> Sql Server >> 分页存储过程里的print @sql不知道为啥打印不出来
  详细解决方案

分页存储过程里的print @sql不知道为啥打印不出来

热度:38   发布时间:2016-04-24 10:12:18.0
分页存储过程里的print @sql不知道为何打印不出来
alter PROC [dbo].[proc_select_page_row] 
@pageindex INT=1,--当前页数 
@pagesize INT=10,--每页大小 
@tablename VARCHAR(50)='',--表名 
@fields VARCHAR(1000)='*',--查询的字段集合 
@keyid VARCHAR(50)='',--主键 
@condition NVARCHAR(1000)='',--查询条件 
@orderstr VARCHAR(500),--排序条件 
@totalRecord BIGINT OUTPUT--总记录数 
AS 
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC ' 
IF ISNULL(@fields,N'')=N'' SET @fields=N'*' 
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1' 
DECLARE @sql NVARCHAR(4000) 
-- IF @totalRecord IS NULL 
-- BEGIN 
SET @sql=N'SELECT @totalRecord=COUNT(*)' 
+N' FROM '+@tablename 
+N' WHERE '+@condition 
EXEC sp_executesql @sql,N'@totalRecord bigint OUTPUT',@totalRecord OUTPUT 
--END 
IF(@pageindex=1) 
BEGIN 
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr 
EXEC(@sql) 
END 
ELSE 
BEGIN 
DECLARE @StartRecord INT 
SET @StartRecord = (@pageindex-1)*@pagesize + 1 
SET @sql=N'SELECT * FROM (SELECT ROW_NUMBER() OVER ('+ @orderstr +N') AS rowId,'+@fields+N' FROM '+ @tablename+N') AS T WHERE rowId>='+STR(@StartRecord)+N' and rowId<='+STR(@StartRecord + @pagesize - 1) 
print  @sql
EXEC(@sql)

END 
GO 

如题,不知道为什么,执行存储过程没有问题,不出错,最后的print @sql显示不出来,消息窗口没有sql语句,要怎么样才能看到?
------解决方案--------------------
pageindex =1?
如果是第一页,不会打印。
------解决方案--------------------
引用:
Quote: 引用:

pageindex =1?
如果是第一页,不会打印。
确实是这个原因,为啥第一页就不会打印出来?

沒有執行print @sql,將print @sql放到end之後,go之前,再試一下。
  相关解决方案