SQL Server中對存儲過程的理解


  數據庫的存儲過程理解為,處理數據的子程序,寫起來像函數,用起來像函數,在SQL Server中存儲過程分為兩大類,系統的和自定義的,系統的都放在master系統數據庫中,自定義就是自己去寫的,用DDL的相關語句即可,創建存儲過程,就像函數一樣,可以有參,也可以無參,無參的時候寫起來很簡單:

CREATE PROC hello
AS
    BEGIN
        /*....*/
    END
GO

執行的時候也是,只需要在自定義存儲過程執行即可

EXEC hello

有參的時候寫法也不陌生:

CREATE PROC hello_1 @n1 int
AS
    BEGIN
        //.....
    END
GO
EXEC hello_1 '123'
/*或者 EXEC hello_1 @n2='123'*/

 

在執行的時候如果是批處理的第一條語句則可以將EXEC省略

在編寫的時候,會有許多不同的需求,存儲過程時沒有返回值的,我們需要返回相關信息的時候就希望類似於C/C++一樣傳入指針或者引用,在SQL Server中實現的方式是在變量之后加上OUTPUT。

對參數進行修飾的屬性還有很多:

VARYING 只適用於輸出參數為Cursor變量,該參數由存儲過程動態構造
參數=值 表示默認值
READONLY 修飾不能在存儲過程中更新或者修改的參數,類似於C/C++的const
RECOMPILE  執行存儲過程時重新編譯

注意事項:

  自定義存儲過程只能在當前數據庫中創建,臨時存儲過程除外,臨時存儲過程在系統數據庫tempdb創建

  存儲過程創建成功之后,過程名在sysobjects中,語句文本存放在syscomment中

  自動執行存儲過程是SQL Server在啟動過程中自動執行的一些存儲過程,這些存儲過程都不能有參數的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM