当前位置: 首页 > news >正文

SQL Server 2005新功能

 

SQL Server 2005相对于SQL Server 2000改进很大,有些还是非常实用的。

举几个例子来简单说明 这些例子我引用了Northwind库。

1. TOP 表达式
SQL Server 2000的TOP是个固定值,是不是觉得不爽,现在改进了。 

--前n名的订单
declare
  @n   int  
set   @n   =   10  
select   TOP ( @n *   from  Orders


2. 分页

不知各位过去用SQL Server 2000是怎么分页的,大多都用到了临时表。SQL Server 2005一句话就支持分页,性能据说也非常不错。

 

-- 按Freight从小到大排序,求20到30行的结果 
select   *   from
    
select  OrderId, Freight, ROW_NUMBER()  OVER ( order   by  Freight)  as  row  from  Orders 
) a 
where  row  between   20   and   30


3. 排名

select   *   from
    
select  OrderId, Freight, RANK()  OVER ( order   by  Freight)  as  rank  from  Orders 
) a 
where  rank  between   20   and   30


4. try ... catch

SQL Server 2000没有异常,T-SQL必须逐行检查错误代码,对于习惯了try catch程序员,2005是不是更加亲切:

 

SET  XACT_ABORT  ON    --  打开 try功能 
BEGIN  TRY 
    
begin   tran  
        
insert   into  Orders(CustomerId)  values ( - 1
    
commit   tran  
    
print   ' commited '  
END  TRY 
BEGIN
 CATCH 
    
rollback     
    
print   ' rolled back '  
END CATCH


5. 通用表达式CTE

通过表达式可免除你过去创建临时表的麻烦。

 

-- 例子:结合通用表达式进行分页
WITH  OrderFreight  AS
    
select  OrderId, Freight, ROW_NUMBER()  OVER ( order   by  Freight)  as  row  from  Orders 

select  OrderId, Freight  from  OrderFreight  where  row  between   10   and   20

特别,通过表达式还支持递归。


6. 直接发布Web Service

想要把store procedure变成Web Service就用这个吧,.NET, IIS都不需要,通过Windows 2003的HTTP Protocol Stack直接发布WebService,用这个功能需要Windows 2003 sp1

-- DataSet CustOrdersOrders(string customerID) 
CREATE  ENDPOINT Orders_Endpoint 
state
= started 
as  http( 
    path
= ' /sql/orders '
    AUTHENTICATION
= (INTEGRATED), 
    ports
= (clear) 

for  soap( 
    WebMethod 
' CustOrdersOrders ' (   
        name
= ' Northwind.dbo.CustOrdersOrders '  
    ), 
    
    wsdl
= default
    
database = ' Northwind '
    namespace
= ' http://mysite.org/ '  
)

相关文章:

  • 是DataGrid的某数字内容列可编辑,并且以NumericStepper组件改变数值。
  • 找工作要做的十件事
  • 什么是数据恢复技术
  • [InnoDB系列] -- SHOW INNODB STATUS 探秘
  • 服务器中的地震仪,MOM2005+SP1部署指南(MOM2005系列之一)
  • 网络硬盘drop.io的使用
  • 1904年 圣路易斯 第三届奥运会
  • 20080605-昨日回顾今日计划
  • 机器人也有女性,Sega E.M.A登场
  • Mastering Oracle SQL学习笔记(join句法专题第八部份)
  • Microsoft .Net 框架 SDK 快速入门教程
  • 杂语
  • SAP BC427 课程中文自学笔记
  • c#中实现类似js的Eval方法
  • SNMP的应用
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Apache的基本使用
  • canvas 绘制双线技巧
  • co模块的前端实现
  • create-react-app项目添加less配置
  • Debian下无root权限使用Python访问Oracle
  • ES6系统学习----从Apollo Client看解构赋值
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Java新版本的开发已正式进入轨道,版本号18.3
  • mongodb--安装和初步使用教程
  • MySQL数据库运维之数据恢复
  • 阿里云前端周刊 - 第 26 期
  • 前端相关框架总和
  • 前言-如何学习区块链
  • 提醒我喝水chrome插件开发指南
  • 我的zsh配置, 2019最新方案
  • 小程序button引导用户授权
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #考研#计算机文化知识1(局域网及网络互联)
  • (2.2w字)前端单元测试之Jest详解篇
  • (39)STM32——FLASH闪存
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (二)linux使用docker容器运行mysql
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (五)IO流之ByteArrayInput/OutputStream
  • **PHP二维数组遍历时同时赋值
  • . Flume面试题
  • ... 是什么 ?... 有什么用处?
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .Net 垃圾回收机制原理(二)
  • .NET 事件模型教程(二)
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .net反混淆脱壳工具de4dot的使用
  • .NET关于 跳过SSL中遇到的问题
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .net专家(张羿专栏)
  • ??eclipse的安装配置问题!??