使用storeprocedure时,Sql查询无法获取in子句中的值 [英] Sql query could not fetch value on in clause when storeprocedure is used

查看:41
本文介绍了使用storeprocedure时,Sql查询无法获取in子句中的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了sql查询,它在普通数据集中工作,当我尝试使用存储过程使用相同的查询时,结果不会获取值。







I have created sql query which works in normal dataset, When iam trying to use same query using store procedure, result does not fetch the value.



string datatypeval="'first name','address'";
 string FieldNames1 = "select FId,DataTypeName from tbl_fieldname where DataTypeName in(" + datatypeval + ");";





以上查询工作正常。



使用存储过程时,它不会获取输出值。





Above query works perfectly.

When using store procedure, it doesnt fetch output value.

DataTable dt1 = dataval(datatypeval);


public static DataTable dataval(string datatypeval)
    {
        try
        {
            DataTable dt1;
            string[] ColumnName = new string[1];
            string[] values = new string[1];
            ColumnName[0] = "@dataval"; values[0] = datatypeval;
            dt1 = returnDatatable("datatype_Details", ColumnName, values);
            return dt1;
        }
        catch (Exception e)
        {
            throw e;
        }
    }
public static DataTable returnDatatable(string SPName, string[] ParameterName, string[] Values)
    {
        DataTable ds = new DataTable();
        try
        {
            openDBConnection();
            SqlConnection mssqlConn = mssqlConnection;
            SqlCommand Cmd = new SqlCommand(SPName, mssqlConn);
            SqlDataAdapter da = new SqlDataAdapter(Cmd);
            Cmd.CommandType = CommandType.StoredProcedure;
            for (int i = 0; i < ParameterName.Length; i++)
            {
                Cmd.Parameters.AddWithValue(ParameterName[i], Values[i]);
            }
            da.Fill(ds);
        }
        catch (Exception ex)
        {
           throw ex;
        }
        finally
        {
            closeDBConnection();
        }
        return ds;
    }





我的SP代码:





My SP Code:

ALTER PROCEDURE [dbo].[datatype_Details]
(
@dataval VARCHAR 
) 
AS
BEGIN
	 
	select FId,DataTypeName from tbl_fieldname  where DataTypeName in(@dataval)
END





我的尝试:





What I have tried:

DataTable dt1 = dataval(datatypeval);
public static DataTable dataval(string datatypeval)
    {
        try
        {
            DataTable dt1;
            string[] ColumnName = new string[1];
            string[] values = new string[1];
            ColumnName[0] = "@dataval"; values[0] = datatypeval;
            dt1 = returnDatatable("datatype_Details", ColumnName, values);
            return dt1;
        }
        catch (Exception e)
        {
            throw e;
        }
    }
public static DataTable returnDatatable(string SPName, string[] ParameterName, string[] Values)
    {
        DataTable ds = new DataTable();
        try
        {
            openDBConnection();
            SqlConnection mssqlConn = mssqlConnection;
            SqlCommand Cmd = new SqlCommand(SPName, mssqlConn);
            SqlDataAdapter da = new SqlDataAdapter(Cmd);
            Cmd.CommandType = CommandType.StoredProcedure;
            for (int i = 0; i < ParameterName.Length; i++)
            {
                Cmd.Parameters.AddWithValue(ParameterName[i], Values[i]);
            }
            da.Fill(ds);
        }
        catch (Exception ex)
        {
           throw ex;
        }
        finally
        {
            closeDBConnection();
        }
        return ds;
    }

推荐答案

请看这里:在SQL IN子句中使用逗号分隔值参数字符串 [ ^ ]


这篇关于使用storeprocedure时,Sql查询无法获取in子句中的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆