存储过程:

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author:<Author,,QiangWang>

-- Create date: <Create Date,,>

-- Description:<Description,分页,>

-- =============================================

ALTER PROCEDURE OrderInfoPage

@startRecordIndex INT,      --分页页码

@pagesize int,              --分页行数

@strWhere varchar(500),     --查询条件

@strOrder varchar(200),     --排序条件

@OUTpageCount INT OUT       --输出记录条数

AS

BEGIN

DECLARE @SBegin int         --开始记录数

DECLARE @EEnd int           --结束记录数

DECLARE @strTmp NVARCHAR(1000) --当前条件下读取到的数据列

DECLARE @strSQL NVARCHAR(3000)

SET @SBegin=(@startRecordIndex-1)*@pagesize+1

SET @EEnd=@pagesize*@startRecordIndex

BEGIN

SET @strTmp='SELECT @OUTpageCount=count(1) FROM OrderInfo oi  left join OrderDetail od on oi.OrderNum=od.OrderNum left join ProductInfo pi on

od.ProductID=pi.ID  left join Store s on pi.StoreID=s.ID left join RandomCode rc on pi.FromID=rc.Random left join UserInfo ui

on oi.UserID=ui.ID left join UserAddress ua on oi.AddressID=ua.ID  '+@strWhere

exec sp_executesql @strTmp,N'@OUTpageCount int out',@OUTpageCount OUT

END

BEGIN

--with as 子查询部分

--ROW_NUMBER() OVER 生成一个有顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY ID)

--还必须添加OVER语句以便告诉SQL Server你希望怎样添加行序号。

set @strSQL='with temptbl as (SELECT ROW_NUMBER() OVER (ORDER BY '+@strOrder+')AS Row, oi.ID as oiID,oi.Title, oi.AddTime,oi.Address,oi.CourierNumber,oi.GoodsTime,oi.IsPrint2,oi.OrderNum,oi.PayTime,oi.PayType,oi.PricePay,oi.PriceMust

,oi.SecurityCode,oi.SendType,oi.Status,oi.SoureType,oi.UserID,od.BarCode,od.ProductID,od.ProductName,od.Count,s.StoreName,pi.Brand,ui.WeiXinName,

ua.ConsigneeName,ua.ConsigneeMobile  from OrderInfo oi  left join OrderDetail od on oi.OrderNum=od.OrderNum left join ProductInfo pi on

od.ProductID=pi.ID  left join Store s on pi.StoreID=s.ID left join UserInfo ui

on oi.UserID=ui.ID left join UserAddress ua on oi.AddressID=ua.ID '+@strWhere+')'

set @strSQL+='SELECT * FROM temptbl where Row between '+STR(@SBegin)+' and '+STR(@EEnd)

exec sp_executesql @strSQL,N'@startRecordIndex int,@strWhere varchar(500), @strOrder varchar(200)',@startRecordIndex ,@strWhere,@strOrder

END

END

GO

C#代码调用:

DataTable dt = Common.DbHelperSQL.ExecStoreProcedureForGettingTable(dir, "OrderInfoPage");//执行存储过程

int total = Common.DbHelperSQL.ExecStoreProcedureForGettingResult(dir, "OrderInfoPage");//总记录

/// <summary>

/// 封装执行存储过程

/// </summary>

/// <param name="parametersInstance">存储过程参数</param>

/// <param name="storedProcedureName">存储过程名称</param>

/// <returns></returns>

public static System.Data.DataTable ExecStoreProcedureForGettingTable(System.Collections.Generic.Dictionary<string, object> parametersInstance, string storedProcedureName)

{

using (SqlConnection con = new SqlConnection(connectionString))

{

try

{

//设置Sql

SqlCommand cmd = new SqlCommand(storedProcedureName, con);

cmd.CommandType = CommandType.StoredProcedure;

cmd.CommandTimeout = 999;

if (parametersInstance != null)

{

foreach (KeyValuePair<string, object> item in parametersInstance)

{

SqlParameter parm = new SqlParameter(item.Key, item.Value);

cmd.Parameters.Add(parm);

}

}

DataTable dt = new DataTable(Guid.NewGuid().ToString());

SqlDataAdapter sdap = new SqlDataAdapter(cmd);

sdap.Fill(dt);

return dt;

}

catch (Exception er)

{

throw er;

}

}

}

/// <summary>

/// 返回受影响行数

/// </summary>

/// <param name="parametersInstance">存储过程参数</param>

/// <param name="storedProcedureName">存储过程名称</param>

/// <returns></returns>

public static int ExecStoreProcedureForGettingResult(System.Collections.Generic.Dictionary<string, object> parametersInstance, string storedProcedureName)

{

using (SqlConnection con = new SqlConnection(connectionString))

{

try

{

//设置Sql

SqlCommand cmd = new SqlCommand(storedProcedureName, con);

cmd.CommandType = CommandType.StoredProcedure;

cmd.CommandTimeout = 999;

if (parametersInstance != null)

{

foreach (KeyValuePair<string, object> item in parametersInstance)

{

SqlParameter parm = new SqlParameter(item.Key, item.Value);

cmd.Parameters.Add(parm);

}

cmd.Parameters["@OUTpageCount"].Direction = ParameterDirection.Output;

}

DataTable dt = new DataTable(Guid.NewGuid().ToString());

con.Open();

cmd.ExecuteNonQuery();

int num = (int)cmd.Parameters["@OUTpageCount"].Value;

con.Close();

return num;

}

catch (Exception er)

{

throw er;

}

}

}


转载于:https://blog.51cto.com/1433189426/1721300

存储过程--分页与C#代码调用相关推荐

  1. oralce用存储过程实现分页 以及 用java调用这个存储过程的代码

    1  PL SQL  创建一个包 2 PL SQL 存储过程分页第一张图 3 PL SQL 存储过程分页第二张图 4 java 调用存储过程第一张图 5 java 调用存储过程 第二张图

  2. mysql通用分页_MySQL海量数据的通用存储过程分页代码

    本节主要内容: MySQL海量数据的通用存储过程分页代码 本节为大家分享一例mysql 通用存储过程分页.海量数据分页的代码. 1,测试用的表结构: 复制代码 代码示例: CREATE TABLE I ...

  3. java调用存储过程分页

    create or replace package mypack 2 as 3 type emp_cursor is ref cursor; 4 end mypack; 视频课:https://edu ...

  4. (转)大数据量分页存储过程效率测试附代码

    大数据量分页存储过程效率测试附代码 在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话. 测试环境 硬件:CPU 酷睿双核T5750  内存: ...

  5. 存储过程分页——单表分页,任意表分页,EF调用分页存储过程

    一.单表分页 if exists(select * from sysobjects where name='proc_movies')drop proc proc_movies go create p ...

  6. 大数据量分页存储过程效率测试附代码

    在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话. 测试环境 硬件:CPU 酷睿双核T5750  内存:2G 软件:Windows serv ...

  7. 存储过程系列之存储过程sql数据库调用和程序代码调用

    1.存储过程,无参数的存储过程 创建无参数存储存储过程 Create Procedure DCEMREMR_TEMPLATE As SELECT TOP 10 [FILENAME],[FILETITL ...

  8. silverlight + wcf(json格式) + sqlserver存储过程分页

    silverlight并没有提供现成的分页控件,百度了一圈,也没有发现aspx中好用的类似AspNetPager成熟控件,网上现有的一些分页代码,很多也是基于1.0版本的,silverlight2.0 ...

  9. [百万级]通用存储过程.分页存储过程

    /*  名称:spAll_ReturnRows  输入:  输出:  调用:   EXEC spAll_ReturnRows 'SELECT  * FROM 表名', 页号, 返回记录数, '主键', ...

最新文章

  1. poj 3349 雪花
  2. 利用 Linux 查找重复文件
  3. 【转】typedef函数指针的用法(C++)
  4. 联合索引使用规则(转载)
  5. GitHub 配置 SSH 连接
  6. Leetcode--85. 最大矩形
  7. ajax 同步怎么回调,Ajax jquery同步回调成功
  8. WPSmushProv3.7.0图片上传压缩插件-WordPress图像优化插件
  9. 机房收费管理系统 之 总结
  10. valgrind 检查内存泄露
  11. 源码分析Dubbo Invoker概述----服务发现、集群、负载均衡、路由体系
  12. 是什么让你开始劝退的?(@韩冬)
  13. 【Machine Learning 五】Coursera无法观看课程解决方案
  14. HikariCP不断打印WARN日志Failed to validate connection com.mysql.jdbc.JDBC4Connection@xxxxx (...) Possibly
  15. 必备!Mac上的硬盘测速专家Blackmagic Disk Speed Test
  16. 2022腾讯云学生服务器价格申请认证及购买攻略
  17. 测试用例(功能用例)——资产类别、品牌、取得方式
  18. matlab中subs怎么用,【转】MATLAB中subs函数效率低
  19. 微信小程序 - 公农历通用时间选择器组件
  20. 视觉显著性python_OpenCV中的显著性检测(Saliency Detection)

热门文章

  1. 三巨头对中国人工智能技术的支撑性作用
  2. SAP MM 预留单据的历史修改记录?
  3. 干货丨从线性回归到无监督学习,数据科学家需要掌握的十大统计技术
  4. transformers、pytorch-transformers、pytorch-pretrained-bert的关系
  5. 元宇宙不是下一代互联网,而是人类群体思维空间或梦境世界的具现
  6. 【创新应用】小图像,大图景:AI彻底改变了显微镜技术
  7. 中科院5nm激光光刻弯道超车?95后本科生DIY纳米级光刻机?背后的真实情况
  8. 清华大学施路平:发展人工通用智能最好的时机到了!
  9. IBM 内核惨败:20 亿美元打水漂 !
  10. 微观世界探索者:15家值得关注的纳米技术公司