`

存储过程,分页查询

阅读更多
存储过程
Create PROCEDURE [dbo].[ProQuery] 
	-- Add the parameters for the stored procedure here
	@Tables varchar(1000),			--表名称,视图
	@PrimaryKey varchar(100),		--主关键字
	@Sort varchar(200) = NULL,		--排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc
	@CurrentPage int = 1,			--当前页码
	@PageSize int = 10,				--分页尺寸
	@Fields varchar(1000) = '*',
	@Filter varchar(1000) = NULL,	--过滤语句,不带Where 
	@Group varchar(1000) = NULL		--Group语句,不带Group By

AS
/**//*默认排序*/
IF @Sort IS NULL or @Sort = ''
SET @Sort = @PrimaryKey
DECLARE @SortTable varchar(100)
DECLARE @SortName varchar(100)
DECLARE @strSortColumn varchar(200)
DECLARE @operator char(2)
DECLARE @type varchar(100)
DECLARE @prec int
/**//*设定排序语句.*/
IF CHARINDEX('DESC',@Sort)>0
BEGIN
SET @strSortColumn = REPLACE(@Sort, 'DESC', '')
SET @operator = '<='
END
ELSE
BEGIN
IF CHARINDEX('ASC', @Sort) = 0
SET @strSortColumn = REPLACE(@Sort, 'ASC', '')
SET @operator = '>='
END
IF CHARINDEX('.', @strSortColumn) > 0
BEGIN
SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))
SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))
END
ELSE
BEGIN
SET @SortTable = @Tables
SET @SortName = @strSortColumn
END
Select @type=t.name, @prec=c.prec
FROM sysobjects o 
JOIN syscolumns c on o.id=c.id
JOIN systypes t on c.xusertype=t.xusertype
Where o.name = @SortTable AND c.name = @SortName
IF CHARINDEX('char', @type) > 0
SET @type = @type + '(' + CAST(@prec AS varchar) + ')'
DECLARE @strPageSize varchar(50)
DECLARE @strStartRow varchar(50)
DECLARE @strFilter varchar(1000)
DECLARE @strSimpleFilter varchar(1000)
DECLARE @strGroup varchar(1000)
/**//*默认当前页*/
IF @CurrentPage < 1
SET @CurrentPage = 1
/**//*设置分页参数.*/
SET @strPageSize = CAST(@PageSize AS varchar(50))
SET @strStartRow = CAST(((@CurrentPage - 1)*@PageSize + 1) AS varchar(50))
/**//*筛选以及分组语句.*/

IF @Filter IS NOT NULL AND @Filter != ''
BEGIN
SET @strFilter = ' Where ' + @Filter + ' '
SET @strSimpleFilter = ' AND ' + @Filter + ' '
END
ELSE
BEGIN
SET @strSimpleFilter = ''
SET @strFilter = ''
END
IF @Group IS NOT NULL AND @Group != ''
SET @strGroup = ' GROUP BY ' + @Group + ' '
ELSE
SET @strGroup = ''
/**//*执行查询语句*/
EXEC(
'
DECLARE @SortColumn ' + @type + '
SET ROWCOUNT ' + @strStartRow + '
Select @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' orDER BY ' + @Sort + '
SET ROWCOUNT ' + @strPageSize + '
Select ' + @Fields + ' FROM ' + @Tables + ' Where ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' orDER BY ' + @Sort + '
'
)


C#代码
private void TestQuery()
        {
            SqlDataAdapter ads = new SqlDataAdapter();
            string connstr = ConfigurationSettings.AppSettings["ConnectionString"];
            SqlConnection conn =  new SqlConnection(connstr);
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            SqlCommand cmd = new SqlCommand("ProQuery", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@Tables", SqlDbType.VarChar);
            cmd.Parameters["@Tables"].Value = "Customer_Company_Info";

            cmd.Parameters.Add("@PrimaryKey", SqlDbType.VarChar);
            cmd.Parameters["@PrimaryKey"].Value = "Company_Tax_Num";

            cmd.Parameters.Add("@CurrentPage", SqlDbType.Int);
            cmd.Parameters["@CurrentPage"].Value = 1;

            cmd.Parameters.Add("@PageSize", SqlDbType.Int);
            cmd.Parameters["@PageSize"].Value = 1;

            cmd.Parameters.Add("@Filter", SqlDbType.VarChar);
            cmd.Parameters["@Filter"].Value = "Security_Fiscal=1";

            cmd.ExecuteNonQuery();
            ads.SelectCommand = cmd;

            DataSet ds = new DataSet();
            ads.Fill(ds);

        }


0
0
分享到:
评论

相关推荐

    LigerUI 储存过程分页查询

    在这个特定的例子中,我们关注的是如何利用LigerUI进行储存过程分页查询,这在处理大量数据时非常有用,因为可以有效地减少服务器负载并提高用户界面的响应速度。 首先,`web.config`是ASP.NET应用程序的核心配置...

    oracle分页查询并返回总记录数据存储过程

    ### Oracle 分页查询并返回总记录数据存储过程 在数据库应用开发中,为了提高用户体验以及减少服务器负担,分页查询成为了一种常见的技术手段。Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种...

    分页存储过程 分页存储过程 分页存储过程

    分页存储过程 分页存储过程 分页存储过程 sql代码

    Oracle的分页查询语句 Oracle分页的存储过程

    本文将详细探讨Oracle的分页查询语句及其存储过程。 首先,Oracle的分页查询语句通常遵循一个标准格式,如下所示: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A WHERE ...

    一个经典的储存过程分页代码

    对于那些需要频繁处理大量数据的应用程序来说,这种存储过程分页查询方式是一种非常好的选择。 此外,本存储过程还支持自定义查询条件、排序方式以及是否重新计算总记录数等功能,使得其在实际应用中更加灵活多变。...

    千万数量级分页存储过程,可支持多表查询,任意排序

    - **分页技术**:通过LIMIT和OFFSET关键字或者存储过程中动态生成SQL语句的方式来实现分页查询。 ### 三、具体实现细节 #### 1. 存储过程的创建 ```sql CREATE PROCEDURE usp_PagingLarge @TableNames VARCHAR...

    高效分页存储过程 高效分页存储过程

    在SQL Server数据库中,分页查询是常见的操作,特别是在数据量庞大的情况下,为了提高用户体验,我们需要快速地加载和展示一部分数据,而不是一次性加载所有数据。高效分页存储过程的实现对于优化数据库性能至关重要...

    delphi分页查询 利用sql2000存储过程分页

    本主题将深入探讨如何在Delphi应用中使用SQL Server 2000的存储过程实现分页查询。 首先,我们要理解分页的基本原理。分页通常涉及到两个关键参数:当前页码(PageNumber)和每页记录数(PageSize)。通过这两个...

    oracle查询分页条件通用存储过程

    oracle数据库的查询分页加条件和排序的通用型存储过程,通过将表名以参数的形式传入到存储过程中做到多表通用,也可以是多表关联的sql语句 将其看作一个表也能调用该存储过程,分页只需要传与页数,和每页显示的行数...

    存储过程分页+分页控件

    本话题将深入探讨“存储过程分页”以及与之配合使用的“分页控件”,帮助你理解这两种技术的核心概念及其应用。 首先,我们来讨论“存储过程分页”。存储过程是预编译的SQL语句集合,它在数据库服务器上执行,可以...

    存储过程分页实现实例源码

    存储过程分页实现实例源码 源码描述: Filename: PeterPageList * Description: 主要运用sql存储过程进行分页实现,在进行分页实现,需要注意一下事项, * 在项目的根目录下面有一个db文件夹,请认真阅读,里面包含...

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程分页

    ASP.NET 存储过程分页

    ASP.NET 存储过程分页是一种在Web应用中实现高效数据检索的技术,它结合了数据库存储过程和分页策略,以提高性能并减轻服务器负担。在这个主题中,我们将深入探讨如何在ASP.NET环境中利用存储过程来实现数据的分页...

    Oracle 存储过程分页

    Oracle 提供了多种方法实现分页查询,下面我们将详细探讨Oracle存储过程中的分页实现。 1. **ROWNUM伪列** 在早期的Oracle版本中,ROWNUM伪列被广泛用于分页。ROWNUM是在结果集生成时自动分配的,表示每一行的顺序...

    通用的存储过程sql分页查询语句

    总结,通用的存储过程SQL分页查询语句是数据库开发中的重要工具,它结合了存储过程的复用性和SQL的灵活性,可以高效地处理大数据量的分页查询。通过选择适当的分页方法和优化策略,我们可以进一步提升查询性能,提供...

    sql分页 sqlserver中存储过程分页

    #### 存储过程分页概述 存储过程是一种预先编译好的 SQL 代码块,存储在 SQL Server 数据库中。使用存储过程进行分页查询的好处包括:提高执行效率、增强代码复用性以及提供更好的安全性等。 #### 示例存储过程分析...

    sybase 实现分页的存储过程

    本文中的存储过程名为 `splitpage`,其目的是根据传入的参数执行分页查询。 #### 存储过程参数 此存储过程接收三个参数: - `@qry`:一个包含基本查询语句的字符串。 - `@ipage`:表示当前请求的页码。 - `@num`:...

    Oracle存储过程分页

    ### Oracle存储过程分页知识点详解 #### 一、Oracle存储过程分页原理及实现方法 在Oracle数据库中,实现分页查询通常有两种方法:一种是使用`ROWNUM`伪列,另一种则是通过存储过程实现。其中,使用存储过程进行...

    Mysql分页存储过程

    针对mysql分页的一个存储过程,可以动态传入表名,可带查询条件,可带排序列

Global site tag (gtag.js) - Google Analytics