You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#网站调用spGetSoore存储过程提示找不到的问题求助

问题原因分析
  • C#调用逻辑错误:你在代码里错误地把完整的EXEC spGetSoore @IdSoore = @IdSoore当成存储过程名称传给了SqlCommand,但SQL Server只会查找名称完全匹配的存储过程,自然找不到。正确的做法是要么指定命令类型为存储过程,只传存储过程名;要么把EXEC语句作为普通SQL文本执行。
  • SSMS红色下划线是缓存问题:SQL Server Management Studio里的红色下划线提示找不到存储过程,只是IntelliSense缓存没更新,实际存储过程存在,所以能正常执行,刷新缓存就能解决。
解决办法

方式一:标准存储过程调用(推荐)

这是调用存储过程的规范写法,代码示例:

using (SqlConnection conn = new SqlConnection("你的数据库连接字符串"))
{
    conn.Open();
    using (SqlCommand cmd = new SqlCommand("spGetSoore", conn))
    {
        // 关键:设置命令类型为存储过程
        cmd.CommandType = CommandType.StoredProcedure;
        // 添加存储过程需要的参数
        cmd.Parameters.Add("@IdSoore", SqlDbType.Int).Value = 你的Id参数值;
        
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                // 处理查询结果
            }
        }
    }
}

方式二:以SQL文本形式执行EXEC语句

如果坚持用EXEC语句,要把它当成普通SQL文本执行,代码示例:

using (SqlConnection conn = new SqlConnection("你的数据库连接字符串"))
{
    conn.Open();
    // 写完整的EXEC语句,注意参数名不要重复冲突
    using (SqlCommand cmd = new SqlCommand("EXEC spGetSoore @IdSoore = @InputId", conn))
    {
        cmd.CommandType = CommandType.Text;
        // 绑定参数到语句里的@InputId
        cmd.Parameters.Add("@InputId", SqlDbType.Int).Value = 你的Id参数值;
        
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                // 处理查询结果
            }
        }
    }
}

解决SSMS红色下划线问题

在SQL Server Management Studio里按下Ctrl+Shift+R,刷新IntelliSense本地缓存,红色下划线就会消失。

内容的提问来源于stack exchange,提问作者Zahra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 17:28:13