ALTERPROCEDURE[dbo].[PagingRecord]
(
@PageIndexint,--页号,从0开始@PageSizeint,--页尺寸@OrderFieldvarchar(100),--排序字段及类型(多个条件用逗号分开)如:JobID DESC,Checkintime@TableNamevarchar(100),--表名或视图表 @StrWherevarchar(2000),--条件 @FieldListvarchar(2000),--欲选择字段列表 @DoCountASbit=1-- 0值返回记录总数, 非 0 值则返回记录 )
ASBEGINTRANDECLARE@SqlQueryvarchar(4000)
IF@DoCount<>0Goto GetCount
ElseGoto GetSearch
GetCount:--返回记录总数DECLARE@SearchSqlASNvarchar(4000)
SET@SearchSql='SELECT Count(*) AS Total FROM '+@TableName+' WHERE '+@StrWhereexec sp_executesql @SearchSql--print @SearchSql COMMITTRANreturn
GetSearch:
SET@SqlQuery='SELECT '+@FieldList+'
FROM (SELECT row_number() over(ORDER BY '+@OrderField+') as rownum,
'+@FieldList+'
FROM '+@TableName+' WHERE '+@StrWhere+') as temp
WHERE rownum BETWEEN ('+cast(@PageIndexasvarchar)+'-1)*'+cast(@PageSizeasvarchar)+'+1 and '+cast(@PageIndexasvarchar)+'*'+cast(@PageSizeasvarchar) +' ORDER BY '+@OrderField--print @SqlQuerySET NOCOUNT ONexecute(@SqlQuery)
SET NOCOUNT OFFCOMMITTRAN
上面是一个分页的存储过程,现在我在另外一个存储过程里面要调用它:
SQL code
if Name='A'BEGINEXECUTE PagingRecord/*我想在这BEGIN与END里面写调用上面那个存储过程的方法,而且要带上那里面的几个参数.这里用几个变量来传,到时我在程序里调用这个A的时候,把PagingRecord的几个参数传进来就可以了*/SELECT
SQL codeif Name='A' BEGIN exec PagingRecord @PageIndex ,@PageSize,@OrderField,@TableName,@StrWhere,@FieldList,@DoCount end --PagingRecord后面可不可以带where参数.就是PagingRecord里面的PageIndex=A存储过程声明的@PageIndex,我要的是这种效果