执行存储过程,报错提示 找不到存储过程

原因:

SQL Server 客户端, 在连接到 SQL Server 数据库以后。会自动读取 数据库的 数据字典信息。也就是 当前数据库,有哪些表/字段/视图/存储过程等基础信息。保存在客户端的内存里面。这样。当你在客户端输入 SQL 语句的时候,输入 表名字.会自动弹出 这个表的字段列表,让你选择。但是,当你新建了一个对象的时候, 例如表, 或者你的那个例子,是新建存储过程abc这个时候,数据库那里,已经有存储过程abc 了。但是客户端的缓存里面, 并没有 存储过程 abc 的信息。 因为内存里面的信息,没有更新。因此,在客户端那里。输入EXEC abc,abc下有红线。将 客户端关闭后,重新打开, 由于客户端 重新加载了 数据库的基础信息。知道了 当前数据库里面,有 一个名字叫 abc 的存储过程因此,就不出红线了。

SQL Server 的工作方式, 是 客户端 - 服务器 的工作方式.就算 SQL SERVER 是安装的自己的电脑上的,数据库也存放在C盘但是你的机器上,实际上是运行了 2 个程序,一个是服务器程序,一个是 客户端程序。客户端 新建了存储过程, 实际上是把SQL代码, 发送给服务器程序。服务器程序 编译代码的有效性,并存储。假如 编译通过了, 那是可以运行的, 不管你数据库存在本机,还是存在服务器上面。至于你本地的那个红线,实际上是 客户端的 本地的模拟的 编译。客户端不管你代码是否正确,都是 发送给服务器那里去执行的。因此你 abc下有红线,提示找不到存储过程“abc”而 又能使用EXEC abc这个就是 客户端 认为 服务器上面,没有 abc 这个存储过程。但是你执行 EXEC abc客户端 是只能原样的把这句话,发给服务器如果 服务器那里,真的没有 abc 这个存储过程那么会返回 服务器的 错误提示。如果服务器有 abc 这个存储过程那么就会返回执行的结果。

 

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页