SQL Server儲存過程多角度介紹

2022-03-27 19:35:26 字數 2279 閱讀 9748

什麼是儲存過程:

儲存過程(procedure)類似於c#語言中的方法,它是sql語句和控制流語句的預編譯集合。儲存過程儲存在資料庫內,可由應用程式通過乙個呼叫執行,而且允許使用者宣告變數、邏輯控制語句以及其他強大的程式設計功能。

儲存過程可包含邏輯控制語句和資料操作語句,它可以接收引數、輸出引數、返回單個或多個結果集以及返回值。

儲存過程在建立時即在伺服器上進行編譯,所以執行起來比單個sql語句快。

類似於c#中的類庫,sql server 提供了一些預編譯的儲存過程,這些儲存過程稱為「系統儲存過程」。

sql server中的儲存過程的特徵如下:

1>接收輸入引數,並向呼叫過程或語句返回值。

2>包含在資料庫中執行操作或呼叫其他儲存過程的程式設計語句。

3>向呼叫過程返回狀態值,指示執行過程是否成功(如果失敗,還返回失敗原因)

使用儲存過程有下列優點:

1>允許模組化程式設計

只需建立一次儲存過程並將其儲存在資料庫中,所以即可在程式中呼叫該過程任意次。

2>允許更快地執行

如果某操作需要大量的t-sql**或需要重複執行,儲存過程將比t-sql批處理**的執行要快。將在建立儲存過程時對其進行分析和優化,並可在首次執行該過程後使用該過程記憶體中的版本。但如果使用t-sql批處理**,每次執行t-sql語句時,都要從客戶端重**送,並且在sql-server每次執行這些語句時,都要對其進行編譯和優化。

3>減少網路流量

建立使用儲存過程後,乙個需要數百行t-sql**的操作,由一條執行該過程**的單獨語句就可實現,而不需要在網路中傳送數百行**

4>可作為安全機制使用

即使對於沒有直接執行儲存過程中語句的許可權的使用者,也可授予他們執行該儲存過程的許可權

儲存過程分為以下兩類:

1>系統儲存過程

2>使用者自定義儲存過程

常用的系統儲存過程:

sp_databases:列出伺服器上的所有資料庫

sp_helpdb:報告有關指定資料庫或所有資料庫的資訊

sp_renamedb:更改資料庫的名稱

sp_tables:返回當前環境下可查詢的物件的列表

sp_columns:返回某個表列的資訊

sp_help:檢視某個表的所有資訊

sp_helpconstraint:檢視某個表的約束

sp_helpindex:檢視某個表的索引

sp_stored_procedures:列出當前環境中的所有儲存過程

sp_password:新增或修改登入賬戶的密碼

sp_helptext:顯示預設值、未加密的儲存過程、使用者定義的儲存過程、觸發器或檢視的實際文字

另外,還有乙個常用的擴充套件儲存過程:xp_cmdshell,它可以完成dos命令下的一些操作,諸如建立資料夾、列出檔案列表等。

使用者定義的儲存過程:

除了系統儲存過程,使用者還可以建立自己的儲存過程,可使用microsoft sql management studio或使用t-sql語句,使用microsoft sql management studio建立儲存過程的步驟類似於檢視,用於建立儲存過程的t-sql語句為create procedure。所有的儲存過程都建立在當前資料庫中。

建立不帶引數的儲存過程:

使用t-sql語句建立儲存過程的語法如下:

create proc[edure] 儲存過程名

assql語句

呼叫儲存過程:

exec 儲存過程名

建立帶輸入引數的的儲存過程:

輸入引數:可以在呼叫時向儲存過程傳遞引數,此類引數可用來在儲存過程中傳入值。

帶輸入引數的儲存過程t-sql語句如下:

create proc[edure] 儲存過程名

@引數1   資料型別  [ = 預設值 ],

@引數n   資料型別  [ = 預設值 ]

assql語句

呼叫儲存過程:

exec 儲存過程名 引數1的值,……,引數n的值

或exec 儲存過程名  @引數1=值,……,@引數n=值

建立帶輸出引數的儲存過程:

輸出引數:如果希望返回值,則可以使用輸出引數,輸出引數後有「output」標記,執行儲存過程後,將把返回值存放在輸出引數中,可供其他t-sql語句讀取訪問。

帶輸出引數的儲存過程t-sql語法如下:

create proc[edure] 儲存過程名

@引數1   資料型別  [ output ],

@引數n   資料型別  [ output ]

assql語句

呼叫儲存過程:

exec 儲存過程名 變數名 output

sql server儲存過程

建立表的語句 create table student sno int primary key,sname nvarchar 30 sgentle nvarchar 2 sage int,sbirth smalldatetime,sdept nvarchar 30 drop table studen...

SQLSERVER儲存過程

sqlserver儲存過程使用說明書 引言首先介紹一下什麼是儲存過程 儲存過程就是將常用的或很複雜的工作,預先用 sql語句寫好並用乙個指定的名稱儲存起來,並且這樣的語句是放在資料庫中的,還可以根據條件執行不同 sql語句,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫 ex...

SQL Server 儲存過程

儲存過程概念 儲存過程優點 儲存過程的介面 儲存過程的解析 編譯過程 儲存過程安全性 檢視儲存過程 加密 解密儲存過程 儲存過程概念 儲存過程 stored procedure 是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數 帶參儲存過程 來執行...