zoukankan      html  css  js  c++  java
  • sql2005存储过程

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go

    ALTER PROCEDURE [dbo].[SP_Page_Exec]
    (
      @TblName varchar(1000),                  -- 表名及表集合 比如:tblA a JOIN tblB b ON a.bid=b.id
      @Fields varchar(1000)  ='*',           -- 列名及字段集合
      @SortKey varchar(255)   ='Id',          -- 排序的字段名
      @OrderType varchar(50)  = 'ASC',        -- 排序类型
      @Orders varchar(2000)   = '',    -- 排序条件
      @Wheres varchar(2000)   = '',    -- 查询条件 (不要加 where)
      @PageSize int           = 10,    -- 页长
      @PageIndex int          = 0,    -- 当前页
      @doCount bit            = 0    -- 返回记录总数, 0分页,1返回总记录数
    )

    AS

    declare @strSql varchar(2000)  --- 主语句
    declare @MyTable varchar(2000)   --- 引用临时表
    declare @PageNum varchar(10)
    declare @size varchar(10)

    Set @PageNum = cast((@PageSize*@PageIndex) as varchar(50))
    Set @size = cast(@PageSize as varchar(50))

    If @Wheres !=''
     Begin
        set @Wheres = ' where '+@Wheres
     End


    Set @MyTable='(SELECT ROW_NUMBER() OVER(ORDER BY '+@SortKey+' '+@OrderType+') AS RowId ,'+@Fields+' FROM '+@TblName + ' ' + @Wheres+')AS MyTable '
    ----- @doCount 为1的情况,计算总记录数 -------------
    IF @doCount != 0
       begin
       set @strSql = 'select count('+@SortKey+') as Total from '+@MyTable
       end
    ------ @doCount 为0的情况,进行分页 ------------
    ELSE
      begin
     set @strSql= 'SELECT TOP '+@size+' * FROM  ' +@MyTable+ ' WHERE RowId > '+ @PageNum+ ' ' + @Orders
      end

    ---- 执行存储过程语句
    Exec(@strSql)


     

  • 相关阅读:
    vim:去掉响铃
    vim:过一个字符
    Msys2:windows下好用的unix模拟器
    vim:折叠操作
    vim:inoremap命令
    vim:关于映射和跳出括号
    vim打造简易C语言编辑器(在用2016.7.10)
    vim利用插件管理工具-管理配置文件
    拨打电话的实现
    类似于抽奖活动的小程序
  • 原文地址:https://www.cnblogs.com/a13971240/p/1316751.html
Copyright © 2011-2022 走看看