|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
DBaaS解决方案既可以解决这些问题,又能为客户节约资金。相反作为解决方案提供商,采用DBaaS模式似乎就并不那么有吸引力了,因为与企业内部署软件的解决方案相比,DBaaS意味着更低的利润。复制代码代码以下:
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
CREATEPROCEDURE[dbo].[Pagination]
@Pageint=1,--以后页码
@PageSizeint=10,--每页纪录条数(页面巨细)
@Tablenvarchar(500),--表名或视图名,乃至能够是嵌套SQL:(Select*FromTabWhereID>1000)Tab
@Fieldnvarchar(800)=*,--前往纪录集字段名,","离隔,默许是"*"
@OrderBynvarchar(100)=IDASC,--排序划定规矩
@Filternvarchar(500),--过滤前提
@MaxPagesmallintoutput,--实行了局-1error,0false,maxpagetrue
@TotalRowintoutput,--纪录总数/*2007-07-1222:11:00update*/
@Descriptvarchar(100)output--了局形貌
AS
BEGIN
--=============================================
--Author:Jimmy.Yu
--Createdate:2007-5-11
--Description:SQL2005以上版本通用分页存储历程
--=============================================
SetROWCOUNT@PageSize;
Set@Descript=successful;
-------------------参数检测----------------
IFLEN(RTRIM(LTRIM(@Table)))!>0
Begin
Set@MaxPage=0;
Set@Descript=tablenameisempty;
Return;
End
IFLEN(RTRIM(LTRIM(@OrderBy)))!>0
Begin
Set@MaxPage=0;
Set@Descript=orderisempty;
Return;
End
IFISNULL(@PageSize,0)<=0
Begin
Set@MaxPage=0;
Set@Descript=pagesizeerror;
Return;
End
IFISNULL(@Page,0)<=0
Begin
Set@MaxPage=0;
Set@Descript=pageerror;
Return;
End
-------------------检测停止----------------
BeginTry
--整合SQL
Declare@SQLnvarchar(4000),@Portionnvarchar(4000);
Set@Portion=ROW_NUMBER()OVER(ORDERBY+@OrderBy+)ASROWNUMFROM+@Table;
Set@Portion=@Portion+(CASEWHENLEN(@Filter)>=1THEN(Where+@Filter+)AStab)ELSE()AStab)END);
Set@SQL=SelectTOP(+CAST(@PageSizeASnvarchar(8))+)+@Field+FROM(Select+@Field+,+@Portion;
Set@SQL=@SQL+Wheretab.ROWNUM>+CAST((@Page-1)*@PageSizeASnvarchar(8));
--实行SQL,取以后页纪录集
Execute(@SQL);
--------------------------------------------------------------------
--整合SQL
Set@SQL=Set@Rows=(SelectMAX(ROWNUM)FROM(Select+@Portion+);
--实行SQL,取最年夜页码
Executesp_executesql@SQL,N@Rowsintoutput,@TotalRowoutput;
Set@MaxPage=(CASEWHEN(@TotalRow%@PageSize)0THEN(@TotalRow/@PageSize+1)ELSE(@TotalRow/@PageSize)END);
EndTry
BeginCatch
--捕获毛病
Set@MaxPage=-1;
Set@Descript=errorline:+CAST(ERROR_LINE()ASvarchar(8))+,errornumber:+CAST(ERROR_NUMBER()ASvarchar(8))+,errormessage:+ERROR_MESSAGE();
Return;
EndCatch;
--实行乐成
Return;
END
绝对应的页面逻辑中写的对应挪用该存储历程的办法(C#)DBaaS解决方案可以降低首次投入成本,对于那些小企业来说,他们往往认为内部部署的数据库成本太高,DBaaS的成本和灵活性优势对小企业吸引力更大,他们是云数据库解决方案的重点客户群体。 |
|