【发布时间】:2014-07-22 04:37:21
【问题描述】:
我正在以复杂的方式执行的逻辑。
我只需要在存储过程中执行这个查询:
select Sizes, SUM(Quantity)
from tbl_SizeBreakup
where (Brand=@brand)
and (Combo in ('1','2')) ...
我必须在 C# 中使用 SQL 参数传递的组合是
DataSet dt = new DataSet();
cmd = new SqlCommand();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "sp_Accessories";
cmd.Connection = con;
cmd.Parameters.AddRange(
new SqlParameter[] {
new SqlParameter("@Mode",mode),
new SqlParameter("@Combo",combo),
}}
因此,如果我传递 1 个参数,则按预期工作。我应该传递的组合是string[](字符串数组)。数组长度可以是任何取决于用户在 UI 中选择的长度。
我的问题是,如何将string[] 传递给new SqlParameter("@Combo",combo)?
我的存储过程..
ALTER proc [dbo].[sp_Accessories]
(
@Mode varchar(50)=null,
@id int=null,
@brand varchar(50)=null,
@department varchar(MAX)=null,
@season varchar(50)=null,
@groupname varchar(MAX)=null,
@styles varchar(50)=null,
@combo varchar(50)=null,
@combo_color nvarchar(max)=null,
)
as
if @Mode='getsizewise'
begin
select Sizes,SUM(Quantity) from tbl_SizeBreakup where (Brand=@brand) and (Department=@department) and (Season=@season) and (Group_Name=@groupname) and (Style=@styles)
and (Combo_Color=@color) and (Total_Add_Qty='Total Quantity') Group By Sizes
end
【问题讨论】:
-
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀! -
谢谢@marc_s .. 刚才我听到了这个问题.. 当然我会关注...
标签: c# sql sql-server