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

    教程作者:佚名    教程来源:不详   教程栏目:SQL server教程    收藏本页
        现在,如果我们用任意三个列名字之一作为参数调用存储过程,存储过程都能够正确地返回结果。Richard Romley提出了一种巧妙的处理方法,如Listing 6所示。它不再要求我们搞清楚可能涉及的列数据类型。这种方法把ORDER BY子句分成三个独立的CASE表达式,每一个表达式处理一个不同的列,避免了由于CASE只返回一种特定数据类型的能力而导致的问题。



    【Listing 6:用列名字作为参数,Romley提出的方法】


    ALTER PROC GetSortedShippers

    @ColName AS sysname

    AS


    SELECT *

    FROM Shippers

    ORDER BY

    CASE @ColName WHEN 'ShipperID'

    THEN ShipperID ELSE NULL END,

    CASE @ColName WHEN 'CompanyName'

    THEN CompanyName ELSE NULL END,

    CASE @ColName WHEN 'Phone'

    THEN Phone ELSE NULL END





      按照这种方法编写代码,SQL Server能够为每一个CASE表达式返回恰当的数据类型,而且无需进行数据类型转换。但应该注意的是,只有当指定的列不需要进行计算时,索引才能够优化排序操作。

     
    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.ct131.com All Rights Reserved.365bet官方 版权所有