调用 带参数存储过程
declare @totalRec int
exec fenye 'venshop_hw',20,1,'hw_id desc','hw_id,hw_name,hw_sn,hw_price1,hw_price2,hw_kucun','sort_id=1',@totalRec output
print '总计'+convert(varchar(6),@totalRec)+'条'
/**
if exists(select * from sysobjects where name='fenye')
drop proc fenye
**/
CREATE procedure fenye
@tableName nvarchar(200),--表名
@pageSize int, --每页显示条数
@curPage int, --当前页
@orderBy nvarchar(200), --排序字段
@field nvarchar(200) = '*', --要查询的字段
@condition nvarchar(200), --条件(不用写where)
@recct int output --返回记录总数(输出参数)
AS
SET NOCOUNT ON
DECLARE
@STMT nvarchar(max) -- sql to execute
--@recct int -- total # of records (for GridView paging interface)
IF LTRIM(RTRIM(@condition)) = '' SET @condition = '1 = 1'
IF @pageSize IS NULL BEGIN
SET @STMT = 'SELECT ' + @field + 'FROM ' + @tableName +'WHERE ' + @condition + 'ORDER BY ' + @orderBy
EXEC (@STMT) -- return requested records
END ELSE BEGIN
SET @STMT = 'SELECT @recct = COUNT(*) FROM ' + @tableName + ' WHERE ' + @condition
EXEC sp_executesql @STMT,@params = N'@recct INT OUTPUT',@recct = @recct OUTPUT
--SELECT @recct AS recct -- return the total # of records
DECLARE
@lbound int,
@ubound int
SET @curPage = ABS(@curPage)
SET @pageSize = ABS(@pageSize)
IF @curPage < 1 SET @curPage = 1
IF @pageSize < 1 SET @pageSize = 1
SET @lbound = ((@curPage - 1) * @pageSize)
SET @ubound = @lbound + @pageSize + 1
IF @lbound >= @recct BEGIN
SET @ubound = @recct + 1
SET @lbound = @ubound - (@pageSize + 1)
END
SET @STMT = 'SELECT ' + @field + '
FROM (
SELECT ROW_NUMBER() OVER(ORDER BY ' + @orderBy + ') AS row,'+ @field +'
FROM ' + @tableName + '
WHERE ' + @condition + '
) AS tbl
WHERE
row > ' + CONVERT(varchar(9),@lbound) + ' AND
row < ' + CONVERT(varchar(9),@ubound)
--EXEC sp_executesql @STMT -- return requested records
EXEC sp_executesql @STMT END
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。