SQLServer写一个分页的存储过程,要求取出101条到110条的内容,请问怎么写请给出具体的sql语句,谢谢。

SQLServer写一个分页的存储过程,要求取出101条到110条的内容,请问怎么写请给出具体的sql语句,谢谢。,第1张

转载的,能用!

------------

CREATE PROCEDURE Pagination

@tblName varchar(255), -- 表名

@strGetFields varchar(1000) = '', -- 需要返回的列

@fldName varchar(255)='', -- 排序的字段名

@PageSize int = 10, -- 页尺寸

@PageIndex int = 1, -- 页码

@doCount bit = 0, -- 返回记录总数, 非 0 值则返回

@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序

@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)

AS

declare @d datetime

set @d=getdate()

declare @strSQL varchar(5000) -- 主语句

declare @strTmp varchar(110) -- 临时变量

declare @strOrder varchar(400) -- 排序类型

if @doCount != 0

begin

if @strWhere !=''

set @strSQL = 'select count() as Total from ['+ @tblName +'] where '+ @strWhere

else

set @strSQL = 'select count() as Total from ['+ @tblName +']'

end

--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都

--是@doCount为0的情况

else

begin

if @OrderType != 0

begin

set @strTmp = '<(select min'

set @strOrder = ' order by ['+ @fldName +'] desc'

--如果@OrderType不是0,就执行降序,这句很重要!

end

else

begin

set @strTmp = '>(select max'

set @strOrder = ' order by ['+ @fldName +'] asc'

end

if @PageIndex = 1

begin

if @strWhere != ''

set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName +'] where ' + @strWhere + ' ' + @strOrder

else

set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName +'] '+ @strOrder

--如果是第一页就执行以上代码,这样会加快执行速度

end

else

begin

--以下代码赋予了@strSQL以真正执行的SQL代码

set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from [' + @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) +' '+@strGetFields+ ' from ['+ @tblName +'] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + ']) from (select top ' + str((@PageIndex-1)@PageSize) + ' ['+ @fldName + ']

from ['+ @tblName +'] where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

end

end

exec ( @strSQL)

select datediff(ms,@d,getdate()) as 查询时间毫秒

go

Pagination 'CopyrightInformation','','id',120,45667,0,0,''

declare @time1 datetime,@time2 datetime

set @time1='2016-11-24'

set @time2='2015-11-11'

select DATEDIFF(day,@time1,@time2) as [day],DATEDIFF(week,@time1,@time2) as [week],datediff(year,@time1,@time2) as [year]

datediff函数,第一个是时间单位,例如按天算差距,或者按周算,

后面两个就是要比较的时间参数。

路径设置好没。

无法与数据源建立连接。

这是一个一般性错误,在报表服务器无法打开到为报表提供数据的外部数据源的连接时发生。此错误和另外一条错误消息一起出现,后者指明了错误的根本原因。与一起出现的可能还有以下错误。

用户“UserName”登录失败该用户无权访问该数据源。如果使用的是SQLServer数据库,请验证该用户是否具有有效的数据库用户登录名。有关如何创建数据库用户或SQLServer登录名的详细信息,请参阅如何创建数据库用户和如何创建SQLServer登录名。

用户“NTAUTHORITY\ANONYMOUSLOGON”登录失败跨多个计算机连接传递凭据时会发生此错误。如果使用Windows身份验证,并且未启用Kerberos5协议,则在跨多个计算机连接传递凭据时将会出现此错误。若要解除此错误,请考虑使用已存储凭据或提示的凭据。有关如何处理此问题的详细信息,请参阅指定凭据和连接信息。

建立与服务器的连接时出错。当连接到SQLServer2005时,此故障可能是因为SQLServer在默认设置下不允许进行远程连接而引发的。(提供程序:命名管道提供程序,错误:40-无法打开与SQLServer的连接)此错误由承载报表服务器数据库的数据库引擎实例返回。多数情况下,此错误是由于SQLServer服务停止而发生的。或者,如果您使用具有高级服务的SQLServerExpressEdition或命名实例,则如果报表服务器URL或报表服务器数据库的连接字符串不正确,就会发生此错误。若要解决这些问题,请执行以下 *** 作:

验证SQLServer(MSSQLSERVER)是否已启动。在承载数据库引擎实例的计算机上,依次单击“开始”、“管理工具”、“服务”,并滚动到SQLServer(MSSQLSERVER)。如果它未启动,则右键单击该服务,选择“属性”,在“启动类型”中选择“自动”,单击“应用”、“启动”,然后单击“确定”。

验证报表服务器URL和报表服务器数据库连接字符串是否正确。如果ReportingServices或数据库引擎是作为命名实例安装的,则在安装过程中创建的默认连接字符串将包含实例名称。例如,如果在名为DEVSRV01的服务器上安装了具有高级服务的SQLServerExpressEdition的默认实例,则报表管理器URL为DEVSRV01\Reports$SQLEXPRESS。此外,连接字符串中的数据库服务器名称将类似于DEVSRV01\SQLEXPRESS。有关SQLServerExpress的URL和数据源连接字符串的详细信息,请参阅具有高级服务的SQLServer2005ExpressEdition中的ReportingServices。若要验证报表服务器数据库的连接字符串,请启动ReportingServices配置工具并查看“数据库安装”页。

无法建立连接。请确保该服务器正在运行。此错误由ADOMDNET提供程序返回。有多种原因可导致发生此错误。如果您将该服务器指定为localhost,请尝试指定服务器名称。如果无法为新连接分配内存,也会发生此错误。有关详细信息,请参阅知识库文章912017。

如果此错误还包含“无法识别这种主机”,则说明AnalysisServices服务器不可用或拒绝连接。如果AnalysisServices服务器是作为命名实例安装在远程计算机上的,您最好运行SQLServerBrowser服务来获取该实例使用的端口号。

(ReportServicesSOAP代理源)如果在报表模型生成过程中出现此错误,并且其他信息部分还包含“SQLServer不存在或访问被拒绝”,则可能是出现了下列情况:

数据源的连接字符串包含localhost。

已对SQLServer服务禁用TCP/IP。

若要解决此错误,您可以将连接字符串修改为使用服务器名称,也可针对服务启用TCP/IP。请执行下列步骤启用TCP/IP:

启动SQLServer配置管理器。

展开SQLServer2005网络配置。

选择“MSSQLSERVER协议”。

右键单击TCP/IP,并选择“启用”。

选择“SQLServer2005服务”。

右键单击SQLServer(MSSQLSERVER),并选择“重新启动”。

对日期的格式化主要是javatextDateFormat和javatextSimpleDateFormat,前者是抽象类,后者是实现类

一般要对日期进行格式化使用如下方式

Date date=new Date();

DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");

String str=dateFormatformat(date);//将日期以“年-月-日”的方式转成字符串

Date newDate=dateFormatparse(str);//将字符串以“年-月-日”的方式解析成日期

数据库中取日期一般有3种方式

resultSetgetDate(1)//只取日期

resultSetgetTime(1)//只取时间

resultSetgetTimestamp(1)//取日期和时间

javasqlDate与javautilDate的关系是继承关系

javautilDate是父类

javasqlDate是子类

根据Java多态原则,从数据库中取出可以直接将sqlDate赋给utilDate

存入则不行,一般使用new javasqlDate(new javautilDate()getTime());

javasqlDate没有无参构造,只有一个带long型的构造,传入的是1970-1-1 00:00:00开始到当前时间的毫秒数,可以用javautilDate的getTime方法获取

vs连接mysql数据库的方法:

新建一个工程名叫mysql,编程环境选择c#,然后选择windows窗体应用程序,新建一个窗体用于显示查询到sql数据库的数据集

从工具箱向form1窗体上拖一个按钮和控件,按钮是触发连接数据库获取数据集,按钮的名称为显示,控件是用于显示数据集内容

单击解决方案资源管理器中的引用文件夹然后右键选择添加引用,选择浏览后打开mysqldatadll,这是c#连接mysql数据库的动态库,里面封装了很多常用的 *** 作数据库的方法

在解决方案资源管理器中的form1cs的代码中加入usingMySqlDataMySqlClient;这就是代码中的实际引用mysqldatadll中的内容,有了这个c#就能很方便地 *** 作sql数据库

在按钮的单击事件中添加如下代码

stringstr="Server=127001;UserID=root;Password=123456;Database=test;CharSet=gbk;";

con=new(str);//实例化链接

conOpen();//开启连接

stringstrcmd="selectfromuser";

cmd=new(strcmd,con);

ada=new(cmd);

DataSetds=newDataSet();

adaFill(ds);//查询结果填充数据集

DataSource=dsTables[0];

conClose();//关闭连接

使用navicat软件在数据库test中新建表user,然后新建两个字段username和password(图中的栏位),navicat软件是mysql的图形化界面工具,负责新建表以及备份等数据库 *** 作,直观地通过界面来 *** 作

数据库建好后就可以执行工程了,单击显示按钮执行结果如下,出现username和password说明数据库连接成功,由于没有添加数据所以下面为空

以上就是关于SQLServer写一个分页的存储过程,要求取出101条到110条的内容,请问怎么写请给出具体的sql语句,谢谢。全部的内容,包括:SQLServer写一个分页的存储过程,要求取出101条到110条的内容,请问怎么写请给出具体的sql语句,谢谢。、在SQLserver中如何获得两个日期相减的天数、为什么ERP系统登录显示系统控制员连结失败呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10073687.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存