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

2016-01-29 16:19 34 1 收藏

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

【 tulaoshi.com - SQLServer 】

    现在,如果我们用任意三个列名字之一作为参数调用存储过程,存储过程都能够正确地返回结果。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表达式返回恰当的数据类型,而且无需进行数据类型转换。但应该注意的是,只有当指定的列不需要进行计算时,索引才能够优化排序操作。

 

来源:http://www.tulaoshi.com/n/20160129/1498295.html

延伸阅读
标签: ASP
  下面将简单介绍一下几种ADO连接方式:ODBC DSN,ODBC DSN-Less, OLE DB Provider,和"MS Remote" Provider. 1。ODBC DSN连接 I.DSN     oConn.Open "DSN=AdvWorks;" & _         "UID=Admin;" & _      ...
标签: SQLServer
  下面的资料可能不太全,但是可以用来做平时的资料查询用的哦,希望能够帮上大家的忙,呵呵。 下面将简单介绍一下几种ADO连接方式:ODBC DSN,ODBC DSN-Less, OLE DB Provider,和"MS Remote" Provider. 1。ODBC DSN连接 I.DSN     oConn.Open "DSN=AdvWorks;" & _    &nbs...
标签: ASP
  数据排序及如何动态排序 //Belltree //http://www.lurer.net/ //初学XML,错误之处多多,各路高手多多指正 在<xsl:for-each select="//item" order-by="text()"及<xsl:apply-templates select="//item"/中都可以看到 order-by属性,该属性可以对选出来的节点按照order-by的值进行排序. <singer...
ISAPI与DAO简介 ISAPI(InternetServerApplicationPrgrammingInterface)是微软公司提供的,和其IIS紧密结合的API。用它可以编制Internet/Intranet的数据库、网络管理和BackOffice等应用。 数据访问对象(DAO即DataAccessObjects),原来是微软为VisualBasic和AccessBasic设计的可编程接口。后来有了OLEAutomation(自动控制)技术,...
标签: Web开发
在本篇的开头,我要感谢一些朋友来信给我指出了前几篇文章中的错误。不知大家是否记得在第八篇中我举了一个简单的利用 Application 制作的页面访问计数器?有位朋友来信问我,为何当他改变计数器起始变量 NumVisits 的值后对最后的记数结果没有任何作用?起初我也大惑不解,让我们来回忆一下这段源程序,如下: % Dim NumVisits NumVisits=0 ...

经验教程

214

收藏

97
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部