0
我想要做什麼: 傳遞此參數'TV','OV','CK'
一個字符串到存儲過程(GetAllDataViaInQuery)MSSQL通參數在C#查詢
CREATE PROCEDURE GetAllDataViaInQuery @param varchar(240)
AS
BEGIN
SELECT TOP 100 [Model_No]
,[AppCode]
,[Model]
FROM [S_ModelMaster] where AppCode in (@param)
END
然後
我需要通過C#應用程序將參數值作爲單個參數傳遞。因爲值中的某些時間可能會有所不同。
例:string paramValue = "TV,OV,CK";
然後我寫了這個C#代碼段。
using (SqlConnection con = new SqlConnection(Properties.Settings.Default.Setting))
{
try
{
//hard coded parameter values
string paramValue = "TV,OV,CK";
con.Open();
DataSet ds = new DataSet();
SqlCommand com = new SqlCommand("GetAllDataViaInQuery", con);
com.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@param", paramValue);
com.Parameters.Add(param);
SqlDataAdapter adp = new SqlDataAdapter(com);
adp.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
但是這還不行。 然後我用SSMS手動執行存儲過程。
DECLARE @return_value int
EXEC @return_value = [application].[GetAllDataViaInQuery]
@param = N'TV,OV,CK'
SELECT 'Return Value' = @return_value
但它沒有工作!
然後我嘗試在sql query
SELECT TOP 100 [Model_No]
,[AppCode]
,[Model]
FROM [S_ModelMaster] where AppCode in ('TV','OV','CK')
而且它的work.So什麼是參數傳遞到IN
查詢在C#中的正確方法是什麼?
一個字符串,*包含*單引號和逗號是與*多個*字符串不一樣。這在T-SQL中與在大多數語言中一樣。 SQL Server已經內置了兩種數據類型的支持,這兩種數據類型都是爲了保存多個值而設計的表格和XML。那麼,爲什麼要強制自己通過傳遞一個字符串來解決問題,然後將其分解爲多個值? –
試試這個 - > http://stackoverflow.com/a/1525153/2020893 –
說真的,這個問題每週要問一次。這不是最容易找到的,但已經有十多個問題接受了答案。 – Luaan