我想做什么:
将此参数'TV','OV','CK'
作为单个字符串传递到存储过程(GetAllDataViaInQuery)
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')
这是有效的。那么在C#中将参数传递给IN
查询的正确方法是什么?
答案 0 :(得分:1)
我看到的方法是,使用表值参数并从c#发送数据格式的参数。
在存储过程中类似于从TableName中选择*,其中AppCode在(从tvpTable中选择参数)
这是类似的