我要投稿
  • 您当前的位置:57365.com -> 技术教程 -> 数据库教程 -> SQL server教程 -> 教程内容
  • [ 收藏本页教程 ]
  • 数据库查询结果的动态排序(1)SQL server]教程

    教程作者:佚名    教程来源:不详   教程栏目:SQL server教程    收藏本页
        在公共新闻组中,一个经常出现的问题是“怎样才能根据传递给存储过程的参数返回一个排序的输出?”。在一些高水平专家的帮助之下,我整理出了这个问题的几种解决方案。


    一、用IF...ELSE执行预先编写好的查询


      对于大多数人来说,首先想到的做法也许是:通过IF...ELSE语句,执行几个预先编写好的查询中的一个。例如,假设要从Northwind数据库查询得到一个货主(Shipper)的排序列表,发出调用的代码以存储过程参数的形式指定一个列,存储过程根据这个列排序输出结果。Listing 1显示了这种存储过程的一个可能的实现(GetSortedShippers存储过程)。



    【Listing 1: 用IF...ELSE执行多个预先编写好的查询中的一个】


    CREATE PROC GetSortedShippers

    @OrdSeq AS int

    AS


    IF @OrdSeq = 1

    SELECT * FROM Shippers ORDER BY ShipperID

    ELSE IF @OrdSeq = 2

    SELECT * FROM Shippers ORDER BY CompanyName

    ELSE IF @OrdSeq = 3

    SELECT * FROM Shippers ORDER BY Phone





      这种方法的优点是代码很简单、很容易理解,SQL Server的查询优化器能够为每一个SELECT查询创建一个查询优化计划,确保代码具有最优的性能。这种方法最主要的缺点是,如果查询的要求发生了改变,你必须修改多个独立的SELECT查询——在这里是三个。
     
    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.hxswjs.com All Rights Reserved.57365.com 版权所有