2014-02-25 35 views
1

我们有C#程序产生的年度定期报告,月度等基础。 这是报表的内联SQL示例。如何将值列表作为参数发送到内联SQL?

SELECT DOB, MEMBNO FROM BASIC WHERE DOJ = @ReportRunDate AND STATUS IN @StatusList 

使用的SqlParameter我们可以发送ReportRunDate为parmeter,但是来的时候@StatusList我们无法找到通过为参之有道。

对于如@statusList的值来自输入会看起来像这样“AB”,12' ,‘Z1’

我们可以实现使用字符串连接像下面

string statusList = "'AB',12','Z1"; 
string sqlCmdText = SELECT DOB, MEMBNO FROM BASIC WHERE DOJ = @ReportRunDate AND STATUS IN (" + statusList + ")"; 

但我们更喜欢使用SQL的所有输入值作为参数。

NOTE: - 我刚才提到的查询是一个例子,原来的查询是一个页面长度,并且有多个IN子句。同样根据规范,我们仅限于使用内联查询。

请您给您的

  1. 如何参数化StatusList变量的指导?
  2. 有几十个需要使用内联SQL的报表,我们正在考虑将每个sql与C#代码分离并将它们移动到嵌入式资源。这是最佳做法吗?

感谢所有。

+0

你不能参数是去了'IN'关键字列表。 –

回答

0

在这里,你去..下面的查询应该工作..

select * from YourTableName where ','[email protected]+',' like '%,'+YourColumnName+',%'

下面是脚本来测试上面的查询

CREATE TABLE #TT(test varchar(100)) 
insert into #TT values('abkk'),('cdll'),('ab'),('cd') 

select * from #TT 

declare @input varchar(100) 
set @input = 'abkk,cdll' 

select * from #tt where ','[email protected]+',' like '%,'+test+',%' 

请注明此信息为答案,如果它可以帮助你!

相关问题