То, что я хочу сделать: Передайте этот параметр '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# в качестве одного параметра. Поскольку некоторое время в значениях может быть различным.
Ex: 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