[color=red][b]***只做分页查询用***[/b][/color]
/**
* procedure name : prcPageResult
* author : michael
* create date : 2009-02-17
*/
create procedure [b]procPageResult[/b]
[b]---获得某一页的数据---[/b]
@currPage int = 1, [b]--->当前页页码(即top currPage)[/b]
@showColumn varchar(2000) = '*', [b]--->需要查询的字段(即column1,column2,......)[/b]
@tabName varchar(2000), [b]--->需要查看的表名(即from table_name)[/b]
@strCondition varchar(2000) = '', [b]--->查询条件(即where condition......) 不用加where关键字[/b]
@ascColumn varchar(100) = '', [b]--->排序的字段名(即order by column asc/desc)[/b]
@bitOrderType int = 0, [b]--->排序的类型(0为升序,1为降序)[/b]
@pkColumn varchar(50) = '', [b]--->主键名称[/b]
@pageSize int = 20 [b]--->分页大小[/b]
[b]as[/b]
begin [b]--->存储过程开始[/b]
[b]---该存储过程需要用到的几个变量---[/b]
[b]declare[/b] @strTemp varchar(1000)
[b]declare[/b] @strSql varchar(4000) [b]--->该存储过程最后执行的语句[/b]
[b]declare[/b] @strOrderType varchar(1000) [b]--->排序类型语句(order by column asc/desc)[/b]
begin
if @bitOrderType = 1 [b]--->@bitOrderType = 1 即执行降序[/b]
begin
set @strOrderType = ' order by ' + @ascColumn + ' desc'
set @strTemp = '<(select min'
end
else
begin
set @strOrderType = ' order by ' + @ascColumn + ' asc'
set @strTemp = '>(select max'
end
if @currPage = 1 [b]--->如果是第一页[/b]
begin
if @strCondition != ''
set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + ' where ' + @strCondition + @strOrderType
else
set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + @strOrderType
end
else [b]--->其他页[/b]
begin
if @strCondition != ''
set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + ' where ' + @strCondition + ' and ' +
@pkColumn + @strTemp + '(' + @pkColumn + ')' + ' from (select top ' + str((@currPage-1)*@pageSize) + ' ' + @pkColumn +
' from ' + @tabName + @strOrderType + ') as TabTemp)' + @strOrderType
else
set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + ' where ' + @pkColumn + @strTemp +
'(' + @pkColumn + ')' + ' from (select top ' + str((@currPage-1)*@pageSize) + ' ' + @pkColumn + ' from ' +
@tabName + @strOrderType + ') as TabTemp)' + @strOrderType
end
end
[color=red][b]EXEC [/b][/color](@strSql)
end [b]--->存储过程结束[/b]
go
[color=blue][b]--------------------------------------------------------------------[/b][/color]
[b]调用方法:[/b]
procPageResult 1,'*','TableName','','CreateDate',1,'PkID',25
查询表TableName的所有字段的前25条记录,因为是第一页,排序字段为CreateDate,1表示降序排列,主键是PkID。这个存储过程的功能比较强大,用在项目中
非常的适用。尤其是在百万级数据上,它的优势就显露无疑了。此段代码是转载别人的。
[color=blue][b]---------------------------------------------------------------------[/b][/color]
[b]***查询表记录数***[/b]
/**
* procedure name : procRowsCount
* author : michael
* create date : 2009-02-17
*/
create procedure [b]procRowsCount[/b]
@tabName varchar(200), [b]--->需要查询的表名[/b]
@colName varchar(200) = '*', [b]--->需要查询的列名[/b]
@condition varchar(200) = '' [b]--->查询条件[/b]
[b]as[/b]
[b]begin[/b]
declare @strSql varchar(255)
if @condition = ''
set @strSql = 'select count(' + @colName + ') from ' + @tabName
else
set @strSql = 'select count(' + @colName + ') from ' + @tabName + ' where ' + @condition
[color=red][b]EXEC [/b][/color](@strSql)
end
[color=darkblue][b]-----------------------------------------------------------------------[/b][/color]
删除记录的通用存储过程和查询单条记录的通用存储过程希望有的朋友传一份,在这里感谢提供原通用分页查询存储过程的哥们,谢谢。
/**
* procedure name : prcPageResult
* author : michael
* create date : 2009-02-17
*/
create procedure [b]procPageResult[/b]
[b]---获得某一页的数据---[/b]
@currPage int = 1, [b]--->当前页页码(即top currPage)[/b]
@showColumn varchar(2000) = '*', [b]--->需要查询的字段(即column1,column2,......)[/b]
@tabName varchar(2000), [b]--->需要查看的表名(即from table_name)[/b]
@strCondition varchar(2000) = '', [b]--->查询条件(即where condition......) 不用加where关键字[/b]
@ascColumn varchar(100) = '', [b]--->排序的字段名(即order by column asc/desc)[/b]
@bitOrderType int = 0, [b]--->排序的类型(0为升序,1为降序)[/b]
@pkColumn varchar(50) = '', [b]--->主键名称[/b]
@pageSize int = 20 [b]--->分页大小[/b]
[b]as[/b]
begin [b]--->存储过程开始[/b]
[b]---该存储过程需要用到的几个变量---[/b]
[b]declare[/b] @strTemp varchar(1000)
[b]declare[/b] @strSql varchar(4000) [b]--->该存储过程最后执行的语句[/b]
[b]declare[/b] @strOrderType varchar(1000) [b]--->排序类型语句(order by column asc/desc)[/b]
begin
if @bitOrderType = 1 [b]--->@bitOrderType = 1 即执行降序[/b]
begin
set @strOrderType = ' order by ' + @ascColumn + ' desc'
set @strTemp = '<(select min'
end
else
begin
set @strOrderType = ' order by ' + @ascColumn + ' asc'
set @strTemp = '>(select max'
end
if @currPage = 1 [b]--->如果是第一页[/b]
begin
if @strCondition != ''
set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + ' where ' + @strCondition + @strOrderType
else
set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + @strOrderType
end
else [b]--->其他页[/b]
begin
if @strCondition != ''
set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + ' where ' + @strCondition + ' and ' +
@pkColumn + @strTemp + '(' + @pkColumn + ')' + ' from (select top ' + str((@currPage-1)*@pageSize) + ' ' + @pkColumn +
' from ' + @tabName + @strOrderType + ') as TabTemp)' + @strOrderType
else
set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + ' where ' + @pkColumn + @strTemp +
'(' + @pkColumn + ')' + ' from (select top ' + str((@currPage-1)*@pageSize) + ' ' + @pkColumn + ' from ' +
@tabName + @strOrderType + ') as TabTemp)' + @strOrderType
end
end
[color=red][b]EXEC [/b][/color](@strSql)
end [b]--->存储过程结束[/b]
go
[color=blue][b]--------------------------------------------------------------------[/b][/color]
[b]调用方法:[/b]
procPageResult 1,'*','TableName','','CreateDate',1,'PkID',25
查询表TableName的所有字段的前25条记录,因为是第一页,排序字段为CreateDate,1表示降序排列,主键是PkID。这个存储过程的功能比较强大,用在项目中
非常的适用。尤其是在百万级数据上,它的优势就显露无疑了。此段代码是转载别人的。
[color=blue][b]---------------------------------------------------------------------[/b][/color]
[b]***查询表记录数***[/b]
/**
* procedure name : procRowsCount
* author : michael
* create date : 2009-02-17
*/
create procedure [b]procRowsCount[/b]
@tabName varchar(200), [b]--->需要查询的表名[/b]
@colName varchar(200) = '*', [b]--->需要查询的列名[/b]
@condition varchar(200) = '' [b]--->查询条件[/b]
[b]as[/b]
[b]begin[/b]
declare @strSql varchar(255)
if @condition = ''
set @strSql = 'select count(' + @colName + ') from ' + @tabName
else
set @strSql = 'select count(' + @colName + ') from ' + @tabName + ' where ' + @condition
[color=red][b]EXEC [/b][/color](@strSql)
end
[color=darkblue][b]-----------------------------------------------------------------------[/b][/color]
删除记录的通用存储过程和查询单条记录的通用存储过程希望有的朋友传一份,在这里感谢提供原通用分页查询存储过程的哥们,谢谢。