1. 程式人生 > >執行儲存過程,報錯提示 找不到儲存過程

執行儲存過程,報錯提示 找不到儲存過程

原因:

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 這個儲存過程那麼就會返回執行的結果。