2014-02-25 34 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+',%' 

請註明此信息爲答案,如果它可以幫助你!

相關問題