/**//****** 物件: 預存程序 dbo.Pro_A_CommGetRecordByPage 指令碼日期: 2007/8/1 上午 09:43:00 ******/ createPROCEDURE[dbo].[Pro_A_CommGetRecordByPage] @tblNamevarchar(255), -- 表名 @talFldNamevarchar(500)='*',--表內部所有的欄位名 @fldNamevarchar(255), -- 主键字段名 @PageSizeint=10, -- 页尺寸 @PageIndexnvarchar(10) ='1', -- 页码 @IsReCountbit=0, -- 返回记录总数, 非 0 值则返回 @OrderTypebit=0, -- 设置排序类型, 非 0 值则降序 @strWherevarchar(1000) =''-- 查询条件 (注意: 不要加 where) AS declare@strSQLvarchar(7000) -- 主语句 declare@strTmpvarchar(1000) -- 临时变量 declare@strOrdervarchar(400) -- 排序类型 if@OrderType!=0--根據OrderType類型決定排序號的方式 begin set@strTmp='<(select min' set@strOrder=' order by ['+@fldName+'] desc' end else begin set@strTmp='>(select max' set@strOrder=' order by ['+@fldName+'] asc' end set@strSQL='select top '+str(@PageSize) +''+@talFldName+' from ['--根據where的條件是否為空添加條件 +@tblName+'] where ['+@fldName+']'+@strTmp+'([' +@fldName+']) from (select top '+str((@PageIndex-1)*@PageSize) +' [' +@fldName+'] from ['+@tblName+']'+@strOrder+') as tblTmp)' +@strOrder if@strWhere!='' set@strSQL='select top '+str(@PageSize) +''+@talFldName+' from [' +@tblName+'] where ['+@fldName+']'+@strTmp+'([' +@fldName+']) from (select top '+str((@PageIndex-1)*@PageSize) +' [' +@fldName+'] from ['+@tblName+'] where 1=1 '+@strWhere+'' +@strOrder+') as tblTmp) and 1=1 '+@strWhere+''+@strOrder if@PageIndex=1 begin set@strTmp='' if@strWhere!='' set@strTmp=' where 1=1 '+@strWhere set@strSQL='select top '+str(@PageSize) +''+@talFldName+' from [' +@tblName+']'+@strTmp+''+@strOrder end exec (@strSQL)