• MSSQL根据表名动态分页的存储过程以及C#.net调用使用


    MSSQL根据表名进行动态分页的sql存储过程:

    该存储过程中操作的表需要设置主键,否则分页出错....

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    --动态按表名分页-- 
    alter proc ShowPageByTable 
     @tableName varchar(40), 
     @pageIndex int=1 , 
     @pageSize int=10, 
     @pageCount int =0 output
    as
    begin
    --声明起始和结束的行号 
     declare @start int, @end int,@pkey varchar(20) 
     --创建临时表存储传入的主键 
     create table #temp 
      (  
      tab_qu varchar(20),owenr varchar(20),tablename varchar(20), 
      cname varchar(20),keys int,pname varchar(20) 
      
      insert #temp
      exec sp_pkeys @tablename --获取该表主键的的系统存储过程 
      select @pkey=cname from #temp --设置主键 
        
        --设置起始和结束坐标 
     set @start=(@pageIndex-1 )*@pageSize +1  
     set @end =@pageIndex * @pageSize 
         
     --动态执行SQL语句,查询所需数据(如果该查询语句有需要其他约束,则需要传入其他约束条件) 
        exec(
      select ROW_NUMBER() over(order by '+@pkey+') as RowID,*  into #OrderTemp  
      from ' + @tableName +'  
         select * from #OrderTemp 
     where RowID between ' +@start + ' and '+ @end
         
     --执行一次全表查询,判断分页的总页数 
     exec('select * into #ss from '+@tableName) 
     set @pageCount= @@ROWCOUNT/@pageSize 
         
     if(@@ROWCOUNT%@pageSize!=0) 
      set @pageCount=@pageCount+1 
     end

    C#调用代码:

      

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    /// <summary> 
            /// 根据表名分页,不获取分页的总页数 
            /// </summary> 
            /// <param name="tablename">表名</param> 
            /// <param name="pageIndex">页码</param> 
            /// <param name="pageSize">每页显示行数</param> 
            /// <returns>该页的数据集</returns> 
            public static DataSet GetDataByNamePage(string tablename, int pageIndex,int pageSize) 
            
                DataSet ds = new DataSet(); 
                using (sqlconn) 
                
                    int count=0; 
                    ds= GetDataByNamePage(tablename, pageIndex, pageSize, out count); 
                
                return ds; 
         
            
            /// <summary> 
            /// 根据表名分页,包含输出参数总页数 
            /// </summary> 
            /// <param name="tablename">表名</param> 
            /// <param name="pageIndex">页码</param> 
            /// <param name="pageSize">每页显示行数</param> 
            /// <param name="pagetCount">输出参数:分页的总页数</param> 
            /// <returns>该页的数据集</returns> 
            public static DataSet GetDataByNamePage(string tablename, int pageIndex, int pageSize,out int pagetCount) 
            
                DataSet ds = new DataSet(); 
                using (sqlconn) 
                
                    sqlconn = new SqlConnection(connstr); 
                    sqlconn.Open(); 
                    SqlDataAdapter sda = new SqlDataAdapter("ShowPageByTable", sqlconn); 
                    sda.SelectCommand.CommandType = CommandType.StoredProcedure; 
                    sda.SelectCommand.Parameters.AddWithValue("@tableName", tablename); 
                    sda.SelectCommand.Parameters.AddWithValue("@pageIndex", pageIndex); 
                    sda.SelectCommand.Parameters.AddWithValue("@pageSize", pageSize); 
                    sda.SelectCommand.Parameters.Add("@pageCount", SqlDbType.Int); 
                    sda.SelectCommand.Parameters["@pageCount"].Direction = ParameterDirection.Output; 
        
                    if (ds.Tables[tablename] != null
                        ds.Tables[tablename].Clear(); 
                    sda.Fill(ds, tablename); 
        
                    pagetCount = (int)sda.SelectCommand.Parameters["@pageCount"].Value; 
                
                return ds; 
        
            }

    本文从百度空间搬家到博客园。

  • 相关阅读:
    2.8Java专项测试复盘
    我的第一篇博客
    VS2010调试汇编
    socket学习
    DLL 共享数据学习
    PE学习
    char*,const char*和string的相互转换 + 三种版本字符串
    unresolved external symbol “symbol”(不确定的外部“符号”)。
    深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p
    volatile学习
  • 原文地址:https://www.cnblogs.com/yunanwu/p/4168554.html
Copyright © 2020-2023  润新知