zoukankan      html  css  js  c++  java
  • sqlserver通用存储过程

    USE [TnpeemSDB]
    GO
    /****** Object:  StoredProcedure [dbo].[pro_GeneralPaged]    Script Date: 10/26/2015 15:58:50 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- Maticsoft.BLL.list.Lists pro = new Maticsoft.BLL.list.Lists();
     -- 调用方法 DataSet ds = pro.ByPro(PageSize, PageIndex, “查询条件”, ”需要分页的表名”, ”需要分页排序的列名”);
     -- 存储过程方法名固定
    
     
    ALTER procedure [dbo].[pro_GeneralPaged]
       @PageIndex Int,--页码
       @PageSize Int,--每页显示记录
       @StrWhere nvarchar(1000),--Where条件
       @TableName nvarchar(1000), --进行分页的表
       @RowName nvarchar(1000),   --进行分页排序的字段
       @RecordCount Int out,--总记录数
       @PageCount Int out --总页数
       as
       
       declare @SQLSTR nvarchar(4000) --查询语句
       
       IF @RecordCount is null
    	BEGIN
    		DECLARE @sql nvarchar(4000)
    		SET @sql=N'select @RecordCount=count(*)'
    			+N' from '+ @TableName +' where 1=1 '
    			+N' '+@StrWhere
    		EXEC sp_executesql @sql,N'@RecordCount int OUTPUT',@RecordCount output
    	END
    	set @PageCount =ceiling(@RecordCount*1.0/@PageSize)
    	if @PageIndex>@PageCount
    	begin
    		set @PageIndex=@PageCount
    	end
       if @PageIndex<1
    	begin
    		set @PageIndex=1
    	end
    	
    if @PageIndex=1 or @PageCount<=1
    	begin
    		set @SQLSTR='select top '+str(@PageSize)+' * from '+ @TableName +' where 1=1 '+ @StrWhere +' order by '+@RowName+' desc'
    	end 
    	else if @PageIndex=@PageCount
    	begin
    		set @SQLSTR='select * from (select top '+ str(@RecordCount-@PageSize*(@PageIndex-1))+' * from '+ @TableName +' where 1=1 '+ @StrWhere + ' order by '+@RowName+' asc)  TempTable order by '+@RowName+' desc'
    	end
    	else 
    	begin
    		set @SQLSTR='select top '+str(@PageSize)+' * from (select top '+str(@RecordCount-@PageSize*(@PageIndex-1))+' * from '+ @TableName +' where 1=1 '+@StrWhere+'order by '+@RowName+' asc) TempTable order by '+@RowName+' desc'
    	end
    	set @SQLSTR=@SQLSTR +' select rcount = '+str (@RecordCount)+',pcount='+ str(@PageCount)
    	exec (@SQLSTR)
    
  • 相关阅读:
    使用tcmalloc编译启动时宕机
    使用tcmalloc编译出现undefined reference to `sem_init'
    使用AddressSanitizer做内存分析(一)——入门篇
    VIM-美化你的标签栏
    Entity Framework Code First (六)存储过程
    Entity Framework Code First (五)Fluent API
    Entity Framework Code First (四)Fluent API
    Entity Framework Code First (三)Data Annotations
    Entity Framework Code First (二)Custom Conventions
    Entity Framework Code First (一)Conventions
  • 原文地址:https://www.cnblogs.com/majiabin/p/4911476.html
Copyright © 2011-2022 走看看