MSSQL 存储过程分页 测试 4

这个是最 XML 版的 没进行仔细测试 可能还有纰漏

/*
  作者: SLIGHTBOY
  建立日期: 2004-10-18
  修改日期:
  存储作用: 作品浏览分页
  作用数据库: DigitalART_Digitaltion
  输入变量:
  输出变量:
*/
CREATE PROCEDURE dbo.USP_Digitaltion_Browse
  @User_Query varchar(500) = NULL,
  @User_Sort varchar(20) = 'Digitaltion_ID',
  @User_Rank varchar(4) = 'Desc',

  @Page_Size int = 24,
  @Page_Order int = 0
AS
  SET NOCOUNT ON
  DECLARE @SQLQuery varchar(1000)
  IF (@Page_Order > 0)
    IF (@User_Rank = 'Asc')
      IF (@User_Query <> '')
        BEGIN
          Set @SQLQuery =
          'SELECT TOP '+ STR(@Page_Size) +'
          1 AS Tag,
          NULL AS Parent,
          Digitaltion_ID AS [row!1!id!element],
          Digitaltion_Title AS [row!1!title!element],
          Digitaltion_SmallThumbnail AS [row!1!thumb!element]
          FROM [DigitalART_Digitaltion]
          WHERE (Digitaltion_ID > (SELECT MAX(Digitaltion_ID) FROM (SELECT TOP '+ STR(@Page_Order * @Page_Size) +' Digitaltion_ID FROM [DigitalART_Digitaltion] WHERE ('+ @User_Query +') ORDER BY '+ @User_Sort +' Asc) AS TeamTable)) AND ('+ @User_Query +')
          ORDER BY '+ @User_Sort +' Asc
          FOR XML EXPLICIT'
        END
      Else
        BEGIN
          Set @SQLQuery =
          'SELECT TOP '+ STR(@Page_Size) +'
          1 AS Tag,
          NULL AS Parent,
          Digitaltion_ID AS [row!1!id!element],
          Digitaltion_Title AS [row!1!title!element],
          Digitaltion_SmallThumbnail AS [row!1!thumb!element]
          FROM [DigitalART_Digitaltion]
          WHERE (Digitaltion_ID > (SELECT MAX(Digitaltion_ID) FROM (SELECT TOP '+ STR(@Page_Order * @Page_Size) +' Digitaltion_ID FROM [DigitalART_Digitaltion] ORDER BY '+ @User_Sort +' Asc) AS TeamTable))
          ORDER BY '+ @User_Sort +' Asc
          FOR XML EXPLICIT'
        END
    Else
      IF (@User_Query <> '')
        BEGIN
          Set @SQLQuery =
          'SELECT TOP '+ STR(@Page_Size) +'
          1 AS Tag,
          NULL AS Parent,
          Digitaltion_ID AS [row!1!id!element],
          Digitaltion_Title AS [row!1!title!element],
          Digitaltion_SmallThumbnail AS [row!1!thumb!element]
          FROM [DigitalART_Digitaltion]
          WHERE (Digitaltion_ID < (SELECT MIN(Digitaltion_ID) FROM (SELECT TOP '+ STR(@Page_Order * @Page_Size) +' Digitaltion_ID FROM [DigitalART_Digitaltion] WHERE ('+ @User_Query +') ORDER BY '+ @User_Sort +' Desc) AS TeamTable)) AND ('+ @User_Query +')
          ORDER BY '+ @User_Sort +' Desc
          FOR XML EXPLICIT'
        END
      Else
        BEGIN
          Set @SQLQuery =
          'SELECT TOP '+ STR(@Page_Size) +'
          1 AS Tag,
          NULL AS Parent,
          Digitaltion_ID AS [row!1!id!element],
          Digitaltion_Title AS [row!1!title!element],
          Digitaltion_SmallThumbnail AS [row!1!thumb!element]
          FROM [DigitalART_Digitaltion]
          WHERE (Digitaltion_ID < (SELECT MIN(Digitaltion_ID) FROM (SELECT TOP '+ STR(@Page_Order * @Page_Size) +' Digitaltion_ID FROM [DigitalART_Digitaltion] ORDER BY '+ @User_Sort +' Desc) AS TeamTable))
          ORDER BY '+ @User_Sort +' Desc
          FOR XML EXPLICIT'
        END
  Else
    IF (@User_Rank = 'Asc')
      IF (@User_Query <> '')
        BEGIN
          Set @SQLQuery =
          'SELECT TOP '+ STR(@Page_Size) +'
          1 AS Tag,
          NULL AS Parent,
          Digitaltion_ID AS [row!1!id!element],
          Digitaltion_Title AS [row!1!title!element],
          Digitaltion_SmallThumbnail AS [row!1!thumb!element]
          FROM [DigitalART_Digitaltion]
   WHERE ('+ @User_Query +')
          ORDER BY '+ @User_Sort +' Asc
          FOR XML EXPLICIT'
        END
      Else
        BEGIN
          Set @SQLQuery =
          'SELECT TOP '+ STR(@Page_Size) +'
          1 AS Tag,
          NULL AS Parent,
          Digitaltion_ID AS [row!1!id!element],
          Digitaltion_Title AS [row!1!title!element],
          Digitaltion_SmallThumbnail AS [row!1!thumb!element]
          FROM [DigitalART_Digitaltion]
          ORDER BY '+ @User_Sort +' Asc
          FOR XML EXPLICIT'
        END
    Else
      IF (@User_Query <> '')
        BEGIN
          Set @SQLQuery =
          'SELECT TOP '+ STR(@Page_Size) +'
          1 AS Tag,
          NULL AS Parent,
          Digitaltion_ID AS [row!1!id!element],
          Digitaltion_Title AS [row!1!title!element],
          Digitaltion_SmallThumbnail AS [row!1!thumb!element]
          FROM [DigitalART_Digitaltion]
   WHERE ('+ @User_Query +')
          ORDER BY '+ @User_Sort +' Desc
          FOR XML EXPLICIT'
        END
      Else
        BEGIN
          Set @SQLQuery =
          'SELECT TOP '+ STR(@Page_Size) +'
          1 AS Tag,
          NULL AS Parent,
          Digitaltion_ID AS [row!1!id!element],
          Digitaltion_Title AS [row!1!title!element],
          Digitaltion_SmallThumbnail AS [row!1!thumb!element]
          FROM [DigitalART_Digitaltion]
          ORDER BY '+ @User_Sort +' Desc
          FOR XML EXPLICIT'
        END
  SELECT '<DigitalARTBrowse>'
  EXECUTE (@SQLQuery)
  SELECT '</DigitalARTBrowse>'
GO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值