存储过程--分页与C#代码调用
存储过程:
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#代码调用相关推荐
- oralce用存储过程实现分页 以及 用java调用这个存储过程的代码
1 PL SQL 创建一个包 2 PL SQL 存储过程分页第一张图 3 PL SQL 存储过程分页第二张图 4 java 调用存储过程第一张图 5 java 调用存储过程 第二张图
- mysql通用分页_MySQL海量数据的通用存储过程分页代码
本节主要内容: MySQL海量数据的通用存储过程分页代码 本节为大家分享一例mysql 通用存储过程分页.海量数据分页的代码. 1,测试用的表结构: 复制代码 代码示例: CREATE TABLE I ...
- java调用存储过程分页
create or replace package mypack 2 as 3 type emp_cursor is ref cursor; 4 end mypack; 视频课:https://edu ...
- (转)大数据量分页存储过程效率测试附代码
大数据量分页存储过程效率测试附代码 在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话. 测试环境 硬件:CPU 酷睿双核T5750 内存: ...
- 存储过程分页——单表分页,任意表分页,EF调用分页存储过程
一.单表分页 if exists(select * from sysobjects where name='proc_movies')drop proc proc_movies go create p ...
- 大数据量分页存储过程效率测试附代码
在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话. 测试环境 硬件:CPU 酷睿双核T5750 内存:2G 软件:Windows serv ...
- 存储过程系列之存储过程sql数据库调用和程序代码调用
1.存储过程,无参数的存储过程 创建无参数存储存储过程 Create Procedure DCEMREMR_TEMPLATE As SELECT TOP 10 [FILENAME],[FILETITL ...
- silverlight + wcf(json格式) + sqlserver存储过程分页
silverlight并没有提供现成的分页控件,百度了一圈,也没有发现aspx中好用的类似AspNetPager成熟控件,网上现有的一些分页代码,很多也是基于1.0版本的,silverlight2.0 ...
- [百万级]通用存储过程.分页存储过程
/* 名称:spAll_ReturnRows 输入: 输出: 调用: EXEC spAll_ReturnRows 'SELECT * FROM 表名', 页号, 返回记录数, '主键', ...
最新文章
- poj 3349 雪花
- 利用 Linux 查找重复文件
- 【转】typedef函数指针的用法(C++)
- 联合索引使用规则(转载)
- GitHub 配置 SSH 连接
- Leetcode--85. 最大矩形
- ajax 同步怎么回调,Ajax jquery同步回调成功
- WPSmushProv3.7.0图片上传压缩插件-WordPress图像优化插件
- 机房收费管理系统 之 总结
- valgrind 检查内存泄露
- 源码分析Dubbo Invoker概述----服务发现、集群、负载均衡、路由体系
- 是什么让你开始劝退的?(@韩冬)
- 【Machine Learning 五】Coursera无法观看课程解决方案
- HikariCP不断打印WARN日志Failed to validate connection com.mysql.jdbc.JDBC4Connection@xxxxx (...) Possibly
- 必备!Mac上的硬盘测速专家Blackmagic Disk Speed Test
- 2022腾讯云学生服务器价格申请认证及购买攻略
- 测试用例(功能用例)——资产类别、品牌、取得方式
- matlab中subs怎么用,【转】MATLAB中subs函数效率低
- 微信小程序 - 公农历通用时间选择器组件
- 视觉显著性python_OpenCV中的显著性检测(Saliency Detection)
热门文章
- 三巨头对中国人工智能技术的支撑性作用
- SAP MM 预留单据的历史修改记录?
- 干货丨从线性回归到无监督学习,数据科学家需要掌握的十大统计技术
- transformers、pytorch-transformers、pytorch-pretrained-bert的关系
- 元宇宙不是下一代互联网,而是人类群体思维空间或梦境世界的具现
- 【创新应用】小图像,大图景:AI彻底改变了显微镜技术
- 中科院5nm激光光刻弯道超车?95后本科生DIY纳米级光刻机?背后的真实情况
- 清华大学施路平:发展人工通用智能最好的时机到了!
- IBM 内核惨败:20 亿美元打水漂 !
- 微观世界探索者:15家值得关注的纳米技术公司