当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

数据库查询后果的动态排序(5)[MSSQL防范]

赞助商链接



  本文“数据库查询后果的动态排序(5)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
5、用户定义函数

  假如你利用的是sql server 2000,想要编写一个用户定义的函数(UDF),这个用户定义函数承受列的名字或编号为参数、返回排序的后果集,Listing 10显示了大大都程序员当作第一挑选的办法.

【Listing 10:列名字作为参数,利用UDF】

CREATE FUNCTION ufn_GetSortedShippers

(

@ColName AS sysname

)

RETURNS TABLE

AS

RETURN

SELECT *

FROM Shippers

ORDER BY

CASE @ColName

WHEN 'ShipperID' THEN CASE SIGN(ShipperID)

WHEN -1 THEN '-'

WHEN 0 THEN '+'

WHEN 1 THEN '+'

ELSE NULL

END +

RIGHT(REPLICATE('0', 10) +

CAST(ABS(ShipperID) AS

varchar(10)), 10)

WHEN 'CompanyName' THEN CompanyName

WHEN 'Phone' THEN Phone

ELSE NULL

END

  但是,SQL Server不承受这个函数,它将返回以下错误信息:

Server: Msg 1033, Level 15, State 1, Procedure ufn_GetSortedShippers,

Line 24

The ORDER BY clause is invalid in views, inline functions, and

subqueries, unless TOP is also specified.

  注意错误信息中的"unless".SQL Server 2000不答应在视图、嵌入式UDF、子查询中呈现ORDER BY子句,因为它们都应当返回一个表,表不能指定行的次序.但是,假如利用了TOP关键词,ORDER BY子句将帮忙肯定查询所返回的行.因此,假如指定了TOP,你还可以同时指定ORDER BY.由于在带有TOP的UDF中答应利用ORDER BY子句,你可以利用一个本领:把"SELECT *"替换成"SELECT TOP 100 PERCENT *".这样,你就可以够成功地构造出一个承受列名字或编号为参数、返回排序后果的函数.

  新构造的函数可以按照以下方法调用:

SELECT * FROM ufn_GetSortedShippers('ShipperID')

  目前,你已经理解了几种用参数肯定查询输出中记录次序的办法.在编写那些答应用户指定查询后果排序尺度的列的利用程序时,你可以利用本文介绍的各种技术,用列名字或编号作为参数,构造出利用CASE表达式和动态履行本领的各种筹划.   以上是“数据库查询后果的动态排序(5)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 基于WEB的数据库查询
  • SQL Server数据库查验
  • 数据库查询中的特别字符的问题
  • 数据库查询后果的动态排序(2)
  • 数据库查询后果的动态排序(3)
  • 数据库查询后果的动态排序(4)
  • 数据库查询后果的动态排序(5)
  • 数据库查询后果的动态排序(1)
  • SQL Server数据库查询优化的常用办法总结
  • 通用SQL数据库查询语句精华利用简介
  • Java理论与实践:在没有数据库的情形下举行数据库查询
  • 三个办法优化MySQL数据库查询
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .