SQL Server儲存過程詳解

2021-05-27 12:59:40 字數 2279 閱讀 5551

什麼是儲存過程:

儲存過程(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的儲存過程詳解

儲存過程 stored procedure 是預編譯sql語句集合,這些語句儲存在乙個名稱 儲存過程的名稱 下並作為單元來處理。儲存過程代替了傳統的逐條執行sql語句的方式,乙個儲存過程中可以包含查詢 插入 刪除 更新等操縱的一系列sql語句,當這個儲存過程被呼叫執行時,這些操作也會同時執行。儲存過...

SQL Server儲存過程入門案例詳解

問題提出我使用過幾次sql server,但所有與資料庫的互動都是通過應用程式的編碼來實現的。我不知到在 使用儲存過程,也不了解實現儲存過程需要做哪些工作。希望能詳細說明。儲存過程是儲存於資料庫中的一組t sql語句。有了儲存過程之後,與資料庫的互動就沒有必要在程式中寫一堆的sql語句,而只需用一條...

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...