c#调用多个可选条件查询的分页存储过程
2009-07-22 15:07
639 查看
一代码:
public DataSet GetAllProduct(string productNameCode,byte productType,byte productState,
short organizationID, int size, int index, ref int? count)
{
//组装每件语句
StringBuilder sbCondition = new StringBuilder();
sbCondition.Append(" WHERE 1=1 ");
if (!string.Empty.Equals(productNameCode))
{
productNameCode = productNameCode.Replace("'", "''");
sbCondition.Append(" and ((AllProduct.ProductCode like '%" + productNameCode + "%') or ");
sbCondition.Append(" (AllProduct.ProductName like '%" + productNameCode + "%'))");
}
if (productType != 0)
{
sbCondition.Append(" and AllProduct.ProductCategory = ");
sbCondition.Append(productType);
}
if (productState != 0)
{
sbCondition.Append(" and AllProduct.ProductStatus = ");
sbCondition.Append(productState);
}
if (organizationID != -1)
{
sbCondition.Append(" and AllProduct.BelongTo = ");
sbCondition.Append(organizationID);
}
SqlParameter[] paras = new SqlParameter[4];
paras[0] = new SqlParameter("@strCondition", sbCondition.ToString());
paras[1] = new SqlParameter("@Size", size);
paras[2] = new SqlParameter("@index", index - 1);
paras[3] = new SqlParameter("@count", count);
paras[3].Direction = ParameterDirection.Output;
DataSet result = SqlHelper.ExecuteDataset(conSisManage, CommandType.StoredProcedure, "Proc_GetAllProduct", paras);
if (paras[3].Value != DBNull.Value)
{
count = (int)paras[3].Value;
}
return result;
}
二数据库:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: Ylem
-- Create date: 2009-07-20
-- Create date: 2009-07-24
-- Description: 得到基本产品,附加产品,特殊产品组合列表
-- =============================================
ALTER PROCEDURE [dbo].[Proc_GetAllProduct]
@strCondition varchar(2000), --查询条件
@Size int,
@index varchar(10),
@count int out
AS
BEGIN
print @strCondition
Create Table #TempRecord (IndexID int /*IDENTITY (1, 1) NOT NULL primary key*/,
ProductID uniqueidentifier,
ProductCode varchar(20),
ProductName nvarchar(64),
ProductStatus smallint,
BelongTo smallint,
ProductCategory smallint,
CreateOn datetime
)
insert into #TempRecord exec(' SELECT IndexID = ROW_NUMBER() OVER(ORDER BY AllProduct.CreateOn desc), * from
(SELECT p.ProductID, p.ProductCode, p.ProductName,p.ProductStatus,p.BelongTo, 1 ProductCategory,p.CreatedDate as CreateOn
FROM Product p --基本产品
UNION ALL
SELECT p.ID ProductID, p.Code ProductCode, p.Name ProductName,-1 ProductStatus,-1 BelongTo, 2 ProductCategory,''1900-1-1'' CreateOn
FROM AttachedProduct p --附加产品
UNION ALL
SELECT p.ID ProductID, p.ProductCode, p.ProductName,-1 ProductStatus,-1 BelongTo, 3 ProductCategory,''1900-1-1'' CreateOn
FROM SpecialProduct p --特殊产品
) as AllProduct
' + @strCondition --+' order by AllProduct.CreateOn desc'
)
--返回统计数
select @count = max(IndexID) from #TempRecord
--返回数据
select * from #TempRecord tmp where IndexID > (@index*@Size) and IndexID<=((@index + 1) * @Size)
drop table #TempRecord
END
/*
declare @strCondition varchar(2000)
declare @count int
set @strCondition=' WHERE 1=1 --and ProductCategory=1-- and AllProduct.ProductStatus = 1 and AllProduct.BelongTo=1'
exec [Proc_GetAllProduct] @strCondition,25,0,@count output
*/
public DataSet GetAllProduct(string productNameCode,byte productType,byte productState,
short organizationID, int size, int index, ref int? count)
{
//组装每件语句
StringBuilder sbCondition = new StringBuilder();
sbCondition.Append(" WHERE 1=1 ");
if (!string.Empty.Equals(productNameCode))
{
productNameCode = productNameCode.Replace("'", "''");
sbCondition.Append(" and ((AllProduct.ProductCode like '%" + productNameCode + "%') or ");
sbCondition.Append(" (AllProduct.ProductName like '%" + productNameCode + "%'))");
}
if (productType != 0)
{
sbCondition.Append(" and AllProduct.ProductCategory = ");
sbCondition.Append(productType);
}
if (productState != 0)
{
sbCondition.Append(" and AllProduct.ProductStatus = ");
sbCondition.Append(productState);
}
if (organizationID != -1)
{
sbCondition.Append(" and AllProduct.BelongTo = ");
sbCondition.Append(organizationID);
}
SqlParameter[] paras = new SqlParameter[4];
paras[0] = new SqlParameter("@strCondition", sbCondition.ToString());
paras[1] = new SqlParameter("@Size", size);
paras[2] = new SqlParameter("@index", index - 1);
paras[3] = new SqlParameter("@count", count);
paras[3].Direction = ParameterDirection.Output;
DataSet result = SqlHelper.ExecuteDataset(conSisManage, CommandType.StoredProcedure, "Proc_GetAllProduct", paras);
if (paras[3].Value != DBNull.Value)
{
count = (int)paras[3].Value;
}
return result;
}
二数据库:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: Ylem
-- Create date: 2009-07-20
-- Create date: 2009-07-24
-- Description: 得到基本产品,附加产品,特殊产品组合列表
-- =============================================
ALTER PROCEDURE [dbo].[Proc_GetAllProduct]
@strCondition varchar(2000), --查询条件
@Size int,
@index varchar(10),
@count int out
AS
BEGIN
print @strCondition
Create Table #TempRecord (IndexID int /*IDENTITY (1, 1) NOT NULL primary key*/,
ProductID uniqueidentifier,
ProductCode varchar(20),
ProductName nvarchar(64),
ProductStatus smallint,
BelongTo smallint,
ProductCategory smallint,
CreateOn datetime
)
insert into #TempRecord exec(' SELECT IndexID = ROW_NUMBER() OVER(ORDER BY AllProduct.CreateOn desc), * from
(SELECT p.ProductID, p.ProductCode, p.ProductName,p.ProductStatus,p.BelongTo, 1 ProductCategory,p.CreatedDate as CreateOn
FROM Product p --基本产品
UNION ALL
SELECT p.ID ProductID, p.Code ProductCode, p.Name ProductName,-1 ProductStatus,-1 BelongTo, 2 ProductCategory,''1900-1-1'' CreateOn
FROM AttachedProduct p --附加产品
UNION ALL
SELECT p.ID ProductID, p.ProductCode, p.ProductName,-1 ProductStatus,-1 BelongTo, 3 ProductCategory,''1900-1-1'' CreateOn
FROM SpecialProduct p --特殊产品
) as AllProduct
' + @strCondition --+' order by AllProduct.CreateOn desc'
)
--返回统计数
select @count = max(IndexID) from #TempRecord
--返回数据
select * from #TempRecord tmp where IndexID > (@index*@Size) and IndexID<=((@index + 1) * @Size)
drop table #TempRecord
END
/*
declare @strCondition varchar(2000)
declare @count int
set @strCondition=' WHERE 1=1 --and ProductCategory=1-- and AllProduct.ProductStatus = 1 and AllProduct.BelongTo=1'
exec [Proc_GetAllProduct] @strCondition,25,0,@count output
*/
相关文章推荐
- MSSQL根据表名动态分页的存储过程以及C#.net调用使用
- C# 调用带有输出参数的分页存储过程
- SQL Server 2000通用分页查询存储过程(可指定返回字段,查询条件)
- SQL分页存储过程和C#中linq分页查询方法
- 分页存储过程,可将查询条件作为参数传递的分页查询存储过程
- 利用存储过程实现分页 ,并且多条件查询
- ADO调用分页查询存储过程的实例讲解
- 完整的分页存储过程以及c#调用方法
- c# oracle 存储过程分页查询
- Sql Server根据表名生成查询的存储过程(查询条件可选)
- ADO调用分页查询存储过程
- SqlServer 多条件查询 [存储过程] 经典例子结合C#的使用
- SQL分页存储过程和C#中linq分页查询方法
- Oracle多条件查询分页存储过程
- oracle入门(8)——实战:支持可变长参数、多种条件、多个参数排序、分页的存储过程查询组件
- SQL Server 2000 通用单表或视图查询存储过程及C#调用示例
- Oracle分页存储过程以及C#调用
- 分页存储过程 UP_GetRecordByPageOrder 多条件查询 错误
- 多条件查询以及分页存储过程(倒叙和顺序查询)
- c# oracle 存储过程分页查询