文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程MSSQLSQL SERVER的ROWCOUNT关键字
精品推荐
特别推荐
·SQL Server企业管理器和查询分析器简介
·常用SQL语句词典
·结束SQL注入隐患3招
·掌握SQL Server数据库的实用技巧
·SQL的简单查询
·快速解决SQL Server“安全疑难”相关问题
·SQL Server 2005:你应知道的13件事
·实例解析:减少SQL日志大小的三个好方法
·使用SQL2000将现有代码作为Web服务提供
·sql server 2000数据库置疑的解决方法
·SQL Server安全问题全攻略之口令
·XP上不能安装MicrosoftSQLSERVER2000吗
·解析Microsoft Sql Server中的like语句
·推荐;适合SQL初学者学习的SQL FAQ集锦
·SQL Server 2005 中的分区表和索引
·查询及删除重复记录的方法大全
·详细介绍优化SQL Server 2000的设置
·关于SQL SERVER 日志满的处理方法
·使用SQL Server 2000索引视图提高性能
·SQL server 2005安装问题汇总
热点TOP10
·SQL server 2005安装问题汇总
·常用SQL语句词典
·Sql server优化50法
·SQL2000 数据库安装说明
·SQL Server 2005 中的分区表和索引
·巴塞尔新资本协议概述
·SQL Server 练习题
·用SQL批量插入数据
·提高查询速度:SQL Server数据库优化方案
·查询及删除重复记录的方法大全
·SQL SERVER中的union,cube,rollup和cumpute运算符
·把SQL SERVER里表里的数据导出成为insert into 脚本
·解决用sa登录sql 2005失败的问题
·在SQL Server 2000里设置和使用数据库复制
·sql server日期时间函数
·Oracle 与SQL Server 2000常用函数对照
·Sql数据库MDF数据文件数据库恢复
·sql 经典语句
·解决方案 用户 sa 登录失败
·SQL Server 2005免费版本下载排行居首

SQL SERVER的ROWCOUNT关键字

日期:2007年3月28日 作者: 查看:[大字体 中字体 小字体]


因为仰望ORACLE,所以一直都以为SQL SERVER很笨。

据传SQL 2005有了RowID的东西,可以解决TOP排序的问题。可惜还没有机会体验。在SQL 2000中写存储过程,总会遇到需要TOP的地方,而一旦遇到TOP,因为没办法把TOP后面的数字作为变量写到预编译的语句中去,所以只能够使用构造SQL,使用Exec来执行。不说效率的问题,心里也总觉得这个办法很笨。

实际上,在SQL 2000中完全可以使用ROWCOUNT关键字解决这个问题。

ROWCOUNT关键字的用法在联机帮助中有比较详细的说明,这儿就不罗嗦了。谈谈体会。

1、使用ROWCOUNT查询前几行结果。

DECLARE @n INT
SET @n = 1000
SET ROWCOUNT @n
SELECT * FROM Table_1
 


 这样,查询结果将等同于

SELECT TOP 100 FROM Table_1

2、同样的道理,使用INSERT INTO..SELECT的时候也有效。

DECLARE @n INT
SET @n = 1000
SET ROWCOUNT @n
INSERT INTO Table_2 (colname1)
SELECT colname1=colname2 FROM Table_1

执行的结果将等同于

INSERT INTO Table_2(colname1)
SELECT TOP 1000 colname1 = colname2 FROM Table_1


3、执行UPDATE和DELETE。

因为UPDATE和DELETE无法直接使用ORDER BY语法,如果使用ROWCOUNT,将按照主键顺序从前往后操作。

DECLARE @n INT
SET @n = 1000
SET ROWCOUNT @n
DELETE FROM Table_1


不过也有解决办法,只要能够使用ORDER BY关键字就可以了,比如说直接用含ORDER BY的子句,或者先使用ORDER BY语法把需要操作的标识列存为一个临时表或表变量,然后再操作语句中使用IN或EXISTS关键字。

DECLARE @n INT
SET @n = 1000
SET ROWCOUNT @n
DECLARE @t TABLE(ID INT)
INSERT INTO @t
SELECT ID FROM Table_1 ORDER BY colname [ASC/DESC]

DELETE FROM  Table_1 WHERE ID IN (SELECT ID FROM @t)


4、对于ROWCOUNT的设置是与Session有关的。如果占用了一个Session,那么对应的这个数据库Session将使用最近一次设置的ROWCOUNT,直到Session结束或者修改了ROWCOUNT。

5、在用户自定义函数中不能使用ROWCOUNT。

6、取消ROWCOUNT。

我不知道为什么在联机帮助中说,写存储过程的时候应该注意尽量避免使用ROWCOUNT,而建议使用TOP。难道MS不知道TOP关键后面的数字不能为变量吗?也许MS是出于担心开发者忘记了取消ROWCOUNT而影响正常的实现。

使用这样的语句即可取消ROWCOUNT了。

SET ROWCOUNT 0


8、总结

使用ROWCOUNT之后可以很方便的解决TOP关键字不能带变量的问题,这样,对于需要排序取值的问题就比较容易解决了。避免了使用EXEC来执行构造SQL语句,调试存储过程的时候也要方便很多。唯一不方便的是,没有找到获取当前ROWCOUNT值的办法,但仔细想来,得到这个值的用处也并不大。

(出处:清风网络学院






上一篇:用Request对象防止JSP缓存机制

下一篇:手机里舍不得删除的48条搞笑短信(保证你没看过)

SQL SERVER的ROWCOUNT关键字 相关文章:
·SQL server 2005安装问题汇总
·Sql server优化50法
·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
·SQL Server 2005 中的分区表和索引
·SQL Server 练习题
·把Windows Server 2003配置为NAT路由器
·提高查询速度:SQL Server数据库优化方案
·部署 Microsoft SQL Server 2005 群集
·关闭Windows Server 2003关机事件跟踪程序
·SQL SERVER中的union,cube,rollup和cumpute运算符
SQL SERVER的ROWCOUNT关键字 相关软件:
·SQL Server 2000 基础系列课程视频
·Windows 2003 Server 简体中文企业版(免激活)ISO
·Microsoft SQL Server 2005 Enterprise Edition SP1简体中文企业版
·简体中文 Windows 2000 Server 培训教程
·逐步精通数据库 sql server 视频教程
·MS SQL Server 2000 四合一
·IMail Server v7.13 无限制破解版
·Microsoft.SQL.Server.2005.简体中文开发版
·ServerMonitor Lite 2.0.8.24
·Microsoft SQL Server 2000 超级管理手冊(HTM)

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot