主题 : SQL Server 2008之开发者的盛宴
你懒得理,我皇家马德里
级别: 六行秋雁

UID: 12
精华: 0
发帖: 12662
威望: 11038 点
无痕币: 2689 WHB
贡献值: 271 点
在线时间: 6151(时)
注册时间: 2008-05-30
最后登录: 2024-04-29

0 SQL Server 2008之开发者的盛宴

  IT专家网独家 从SQL Server 2005升级到2008,有哪些特性让开发人员眼前为之一亮呢?
  在业界热切的期盼中,微软终于在上个月正式推出了SQL Server2008。虽然大家对这个最新版SQLServer的期盼程度没有当年对待2005登场时那么热烈,但总的来说,SQLServer2008还是有很多显著的改进,从资源管理到基于策略的管理就让不少的数据库管理员希望能尽快升级。其中也有一些引人注目的变化和对性能的补充是针对开发人员的。如果开发人员在正式发布之前曾花费不少时间来评估SQLServer2008社区技术预览版的话,那么就会发现其中很多改进的功能值得进一步细细品味。
  T-SQL的甜点
  为了让那些大部分时间都得用在闷头写T-SQL语句的开发人员活得轻松自在一些,微软在SQLServer2008中增加了两样新甜点:表值参数(table-valued meter)和新的MERGE语法。
  表值参数,简而言之,就是能够被传递到存储过程或函数的包含了多个数据行的参数。很多开发人员如果要编写不断重复被调用来执行完全相同操作的存储过程,那么表值参数就能解决这个问题。此外,在很多情况下,表值参数还可以帮助清除和简化临时表。
  让纯T-SQL开发人员来编写表值参数对他们来说可能有一点棘手,但其实也不是真的那么难学。基本上,首先必须创建一确切的用户自定义数据类型,其中涵盖了表的定义。然后要往表里填充数据。表填入数据后,使用Readonly关键字,在只读状态下传递表值参数给其他代码,也就是说,你不能对代码(引用了该参数)中的表值参数执行数据操作语言或DML等操作,等同于你不能修改表内的数据。执行完上面的步骤,就可以将表值参数传递到存储过程或函数了。开发人员可以利用表值参数在T-SQL内直接抽取一定的数据记录(或者构建一个记录集),然后将记录集传递到一个存储过程,应用到业务逻辑。这比其它一些以前常用的解决方法都要好用多了。
  下面要提到另外一个和T-SQL相关的新玩意,那就是新的MERGE语句,有了它开发人员用一条语句就可以将插入、更新、删除等复杂操作全部执行完。利用这个新语句,开发人员可以将数据源和目标表或目标视图联结(join)起来,然后根据初始联结的结果,按照源数据表来对目标对象表的数据执行上述操作。基本上,就是用MERGE语句来比较某个表和另外一个数据集的异同,然后根据比较的结果来对目标表的数据进行插入、更新或删除操作,使目标表数据和源表一致。还没有这个MERGE语句的时候,我们一般要通过比较源数据和新数据的异同对数据集进行迭代,或者构建查询来更新已有的记录、插入新记录或删除旧记录,每次只能执行一种操作。
  ☆  attitudetrip推广 
Total 0.091444(s) query 3, Time now is:05-03 02:44, Gzip enabled 粤ICP备07514325号-1
Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛