存储过程 returns 没有包含 SqlDataAdapter 的行

Stored procedure returns no rows with SqlDataAdapter

我是 SqlDataAdpter 的新手,我正在尝试执行存储过程。存储过程成功执行但未返回任何行。我已经使用 SQL Server Profiler 来监视调用并且它成功运行(我可以从 Profiler 复制并执行查询而无需修改它并获得结果)。

我有以下内容:

public ActionResult Index()
{
    SqlConnection conn = null;
    DataSet results = null;

    try
    {
        string connectionString = // ... my connection
        conn = new SqlConnection(connectionString );
        string query = @"usp_mySP";

        conn.Open();

        SqlDataAdapter sqlAdpt = new SqlDataAdapter(query, conn);
        sqlAdpt.SelectCommand.CommandType = CommandType.StoredProcedure;

        var dataDate = new SqlParameter { ParameterName = "@DataDate", Value = DateTime.Now };
        var idList = new SqlParameter { ParameterName = "@IDList", Value = "1231,2324,0833" };                 

        sqlAdpt.SelectCommand.Parameters.Add(dataDate);
        sqlAdpt.SelectCommand.Parameters.Add(idList);

        results = new DataSet();
        sqlAdpt.Fill(results);

        sqlAdpt.Dispose();
    }
    catch (SqlException e)
    {               
        throw new Exception("Exception:" + e.Message);
    }
    finally
    {
        if (conn != null)
            conn.Close();
    }

    return View(results);
}

当我通过调试器检查 DataSet 时,它总是 returns 0 行。

请帮助我做错了什么?

注意: 我也试过(但不喜欢)作为 SQL 命令执行:

EXEC usp_mySP @DataDate, @IDList

它也没有用,因为我遇到了 intvarchar 的转换错误。

我认为您尝试使用 SqlCommand 添加 SqlParameter,如下所示:

SqlCommand cmd = new SqlCommand();
cmd.parameter.addwithvalue(@DataDate,DateTime.Now);

原来是因为set nocount on。我将它添加到我的 sp 并且它有效。谢谢大家解惑