日期:2014-05-17  浏览次数:20547 次

找不到存储过程
asp.net中执行一个存储过程,该存储过程在sql2005的management studio中执行没问题,我在aspx中换成统一数据库下的其它存储过程执行也没问题。但就某个存储过程不能执行,提示如下:

找不到存储过程 'getProjectByInitletter'。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.Data.SqlClient.SqlException: 找不到存储过程 'getProjectByInitletter'。

咋回事?


------解决方案--------------------
确保你的存储过程是存在的,还有你的存储过程写好了,可以在数据库那边调用执行一下,看看行不行。

比如在sql server 2005中你写好了存储过程,你需要运行一下才会生成的。
------解决方案--------------------
仔细检查,是不是那个字母写错了,或者顺序颠倒了
------解决方案--------------------
数据库是传到服务器上去来的吗? 检查存储过程的架构名称。。是否有前缀
------解决方案--------------------
重新编译一下 试试 或者重新运行一下 存储过程
------解决方案--------------------
把你调用存储过程的代码贴出来....
------解决方案--------------------
没连错数据库吧
------解决方案--------------------
调用代码中 try catch 下
 能抛出啥!
还不行的话 写几句代码测试下 为空的话 就不用多解释了

------解决方案--------------------
判断存储过程是否存在
C# code

public static bool IsStoredProcExisting(SqlConnection conn, string procName)
        {
            bool result = false;
            conn.Open();
            SqlCommand command = conn.CreateCommand();
            command.CommandText = "SELECT name FROM sysobjects WHERE  xtype = 'P' and name = @name";
            command.Parameters.Add("@name", procName);
            object temp = command.ExecuteScalar();
            result = temp != null;
            conn.Close();
            return result;
        }

------解决方案--------------------
把代码贴出来看看
------解决方案--------------------
我记得如果是sql server2005 没有打补丁的情况下,存储过程不是立刻生效的,可能需要重启服务。

换数据库,或者安装补丁