易截截图软件、单文件、免安装、纯绿色、仅160KB

Microsoft SqlServer 2005 通用分页 存储过程

本来我是不赞成使用通用存储过程的,主要是因为根据表结构来定制分页查询不用动态的拼SQL,这样才是真正的高效,而且只要写过一个,那么再有新需求的时候,小范围改动几处就ok了。
但总是有人向我讨要或者讨论通用存储过程,没办法,被逼无奈,良心丧与困境。
木有找到T-SQL代码编辑器
-- =============================================
-- Author: 袁立强
-- Create date: 2006-5-11
-- Description: SQL 2005 版本 通用分页存储过程
-- For: FirstDM
-- BLOG: http://blog.csdn.net/ylqmf
-- =============================================
CREATE PROCEDURE [dbo].[Pagination]
@Table nvarchar(4000) = N'select * from sys.objects',
@ID nvarchar(200) = N'[object_id]',
@OrderBy nvarchar(2000) = N'[object_id]',
@PageSize int = 20,
@PageIndex int = 1,
@RowCount int OUTPUT
as
if @PageIndex<1
begin
set @PageIndex=1;
end
if @PageSize<1
begin
set @PageSize = 20;
end
declare @begin int
declare @end int
set @begin=(@PageIndex-1)*@PageSize+1;
set @end = @PageIndex*@PageSize;
declare @from nvarchar(4000)
declare @sql nvarchar(4000)
declare @index int
select @index = PATINDEX(N'%from%',@table);
if @index = 0
begin
set @from = N'from '+@Table;
set @sql= N'select * from '+@Table;
end
else
begin
set @from = SUBSTRING(@table,@index,LEN(@table)-@index+1);
set @sql = @Table;
end
declare @parameters nvarchar(50)
set @parameters = '@RowCount int OUTPUT';
declare @SQLString nvarchar(max)
select @SQLString =N'
declare @Tpage table
(
id bigint,
inx bigint PRIMARY KEY
);
with cte_page
as
(
select '+@id+N' as id,ROW_NUMBER() over (order by '+@orderby+N') as inx '+@from+N'
)
insert @Tpage select * from cte_page;
with cte_temp
as
(
'+@sql+N'
)
select a.* from cte_temp as a
inner join @Tpage as b on b.id = a.'+@ID+N'
where b.inx between '+CONVERT(nvarchar(100), @begin)+N' and '+CONVERT(nvarchar(100), @end)+N';
with cte_count
as
(
select top 1 inx from @Tpage order by inx desc
)
select @RowCount = inx from cte_count;
'
exec sp_executesql @SQLString , @


相关文档:

sqlServer中常见的日期格式

进来因为开发原因,经常需要使用日期方面的比较和操作,整理了一下这方面的资料,供大家共享:
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm
例如:
select getdate()
2004-09-12 11:06:08.177
整理了一下SQL Server里面可能经常会用到的日期格式转换方法:
举例如下:
select CONVE ......

SQLSERVER 存储过程 语法

*** author:Susan
*** date:2005/08/05
*** expliation:如何寫存儲過程的格式及例子,有游標的用法!
*** 本版:SQL SERVER 版!
******************************************************/
在存儲過程中的格式規格:
CREATE PROCEDURE XXX
/*
列舉傳入 ......

sqlserver同时导出表结构和数据

用oracle习惯了,导出用exp语句,直接生成dmp文件,导入用imp语句,表结构和数据同时搞定。最近需要用到sqlserver,总是不能够同时导出表结构和数据,google上百度了很久也没解决方法。
右键--所有任务--导出数据--选择数据源,数据源为用于SQLServer的Microsoft OLE DB提供程序,选择验证方式 ......

sqlServer,oracle中case关键字的用法

    在写SQL时,有时要根据已有的列值构造新的列值,这时就要用到的SQL中的case关键字。如下所示查询负责人信息表(T_MS_CustomerCrmInfoDutyPerson)中的是否是主要负责人(isMainDuty)字段,但是这个字段的值是以枚举的方式存储的,存储0表示是否,1表示是,否则表示未判断。这时直接查询出的值不是 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号