|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
现在,假如我们用任意三个列名字之一作为参数调用存储过程,存储过程都能够准确地返回结果。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) |
| 快精灵印艺坊 版权所有 |
首页 |
||