当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 数据库查询结果的动态排序(1)

MSSQL
sql server的保留关键字
SQL2000 关于 Java JDBC 驱动的安装和设定
SQL Server2005数据库查询中使用CTE
如何整理SQL Server输入数据
SQL优化34条
怎样用SQL服务器调节器收集重要信息
黑客经验谈 MSSQLSA权限入侵的感悟
SQL Server企业管理器和查询分析器简介
SQL Server开发人员应聘常被问的问题
限制系统管理员对SQL Server进行访问
升级到SQL Server 2005之后转换登录
SQL Server 2000中监控失败的登录尝试
MSSQL移动到新服务器出现不匹配问题
让你见识一下SQL Server口令的脆弱性
全面调整SQL Server的硬件性能计划
SQL SERVER数据导成INSERT
SQL Server中保护数据的安全选项
防范SQL注入攻击的新办法
SQL Server数据库安全管理机制详解
妙用SQL子查询来从子表里删除数据

MSSQL 中的 数据库查询结果的动态排序(1)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 72 ::
收藏到网摘: n/a

    在公共新闻组中,一个经常出现的问题是“怎样才能根据传递给存储过程的参数返回一个排序的输出?”。在一些高水平专家的帮助之下,我整理出了这个问题的几种解决方案。


一、用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查询——在这里是三个。