創建存儲過程

我們可以使用CREATE PROCEDURE來創建一個存儲過程。下面就是一個非常簡單的存儲過程的一個例子:
CREATE PROCEDURE pro_book
AS
SELECT * FROM forum
當你創建存儲過程時,你必須給它指定一個名稱。在本例子中,存儲過程的名稱爲pro_book。你可以給存儲過程賦予任何你想要的名稱,但最好你能夠使該名稱在一定程度上描述存儲過程的功能。每一個存儲過程都包括一個或多個SQL語句。爲了指明是存儲過程一部分的SQL語句,你只需簡單地在關鍵詞AS後面包含它們。在前面例子中的存儲過程只包含一個SQL語句。當該存儲過程執行時,它返回在forum表中所有的記錄。
你可以使用EXECUTE語句來執行一個存儲過程。比如,爲了執行pro_book存儲過程,你可以使用如下的語句:

EXECUTE pro_book

當你執行該存儲過程時,所有包括在其中的SQL語句都會執行,在上面的例子中,會返回所有在forum表中的記錄。
當在批處理中的第一個語句是調用存儲過程時,你並不需要使用EXECUTE語句。你可以簡單地提供存儲過程的名稱來執行存儲過程。比如在ISQL/W中,可以象下面所示來執行存儲過程:
pro_book
這起同樣的作用。存儲過程會被執行,並會返回結果。然而如果在該存儲過程之前還有其他的任何語句,你就會收到錯誤信息(一般地,語法錯誤)。
當你創建和執行一個存儲過程時,這僅僅是在某一個數據庫的範圍內完成。假設你在數據庫NetBBS內創建了存儲過程pro_book。如果沒有指明過程調用,你就不能在另一個數據庫比如NetBBS2中調用存儲過程pro_book。假如你需要在NetBBS2中執行存儲過程pro_book,你必須使用如下的語句(注意下面的兩個點號):
EXECUTE NetBBS.. pro_book
一旦你已經創建了一個存儲過程,你就能使用系統存儲過程sp_helptext來觀看在該存儲過程的的SQL語句。比如,如果你輸入命令sp_helptext  pro_book,就會顯示下面的結果:
text
……………………………………………
CREATE PROCEDURE pro_book
AS
SELECT * FROM forum

注意:你可能感到奇怪的是,sp_helptext系統過程本身就是一種存儲過程類型。它是一種系統的存儲過程。(系統存儲過程存儲在Master數據庫中,能夠被所有的數據庫訪問。)爲了滿足你的好奇心,你可以使用命令sp_helptext sp_helptext來觀看組成sp_helptext本身的SQL語句。你在創建完存儲過程後,不能對其進行修改。假如你需要修改一個存儲過程。你必須首先破壞它,然後重新構建之。爲了破壞一個存儲過程。你可以使用DROP PROCEDURE語句,例如下面的語句刪除pro_book存儲過程:
DROP PROCEDURE pro_book
 注意
你可以使用系統存儲過程sp_help來觀看在當前數據庫中所有存儲過程的列表。假如你不加任何修改地執行了sp_help。該過程會顯示在當前數據庫中所有的存儲過程、觸發器和表。假如在sp_help後面跟上指定的存儲過程,sp_help會僅僅顯示那個存儲過程的信息。

發佈了9 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章