快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

数据库查询结果的动态排序(6)

 现在,假如我们用任意三个列名字之一作为参数调用存储过程,存储过程都能够准确地返回结果。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表达式返回恰当的数据类型,而且无需进行数据类型转变。但应该注重的是,只有当指定的列不需要进行计算时,索引才能够优化排序操作。
返回类别: 教程
上一教程: 在SQL SERVER 2005中解决死锁
下一教程: MYSQL字段长度

您可以阅读与"数据库查询结果的动态排序(6)"相关的教程:
· 数据库查询结果的动态排序(7)
· 数据库查询结果的动态排序(1)
· 数据库查询结果的动态排序(5)
· 数据库查询结果的动态排序(3)
· 数据库查询结果的动态排序(2)
    微笑服务 优质保证 索取样品