SQLSERVER儲存過程

2021-06-11 22:10:03 字數 4172 閱讀 3281

sqlserver儲存過程使用說明書

引言首先介紹一下什麼是儲存過程:儲存過程就是將常用的或很複雜的工作,預先用

sql語句寫好並用乙個指定的名稱儲存起來,並且這樣的語句是放在資料庫中的,還可以根據條件執行不同

sql語句,

那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫

execute,

即可自動完成命令。

create procquery_book as

select * frombook go

--呼叫儲存過程

exec query_book

請大家來了解一下儲存過程的語法。

create proc [ edure ] procedure_name [ ; number ]

[ [ varying ] [ = default ] [ output ]

] [ ,...n ]

[ with

][ for replication ]

as sql_statement [ ...n ]

一、引數簡介

1、 procedure_name

新儲存過程的名稱。過程名必須符合識別符號規則,且對於資料庫及其所有者必須唯一。

要建立區域性臨時過程,可以在

procedure_name 

前面加乙個編號符

(#procedure_name)

,要建立全域性臨時過程,可以在

procedure_name 

前面加兩個編號符

(##procedure_name)

。完整的名稱(包括# 或

##)不能超過

128 

個字元。指定過程所有者的名稱是可選的。

2、;number

是可選的整數,用來對同名的過程分組,以便用一條

drop procedure 

語句即可將同組的過程一起除去。例如,名為

orders 

的應用程式使用的過程可以命名為

orderproc;1

、orderproc;2 

等。drop procedure orderproc 

語句將除去整個組。如果名稱中包含定界識別符號,則數字不應包含在識別符號中,只應在

procedure_name 

前後使用適當的定界符。

3、@parameter

過程中的引數。在

create procedure 

語句中可以宣告乙個或多個引數。使用者必須在執行過程時提供每個所宣告引數的值(除非定義了該引數的預設值)。儲存過程最多可以有

2100 

個引數。使用@

符號作為第乙個字元來指定引數名稱。引數名稱必須符合識別符號的規則。每個過程的引數僅用於該過程本身;相同的引數名稱可以用在其它過程中。預設情況下,引數只能代替常量,而不能用於代替表名、列名或其它資料庫物件的名稱。

4、data_type

引數的資料型別。所有資料型別(包括

text

、ntext 

和image

)均可以用作儲存過程的引數。不過,

cursor 

資料型別只能用於

output 

引數。如果指定的資料型別為

cursor

,也必須同時指定

varying 

和output 

關鍵字。

說明:對於可以是

cursor 

資料型別的輸出引數,沒有最大數目的限制。

5、varying

指定作為輸出引數支援的結果集(由儲存過程動態構造,內容可以變化)。僅適用於游標引數。

6、default

引數的預設值。如果定義了預設值,不必指定該引數的值即可執行過程。預設值必須是常量或

null

。如果過程將對該引數使用

like 

關鍵字,那麼預設值中可以包含萬用字元(%、

_、 和

[^])。

7、output

表明引數是返回引數。該選項的值可以返回給

exec[ute]

。使用output 

引數可將資訊返回給呼叫過程。

text

、ntext 

和image 

引數可用作

output 

引數。使用

output 

關鍵字的輸出引數可以是游標佔位符。

8、n表示最多可以指定

2100 

個引數的佔位符。

9、recompile 

表明sql server 

不會快取該過程的計畫,該過程將在執行時重新編譯。在使用非典型值或臨時值而不希望覆蓋快取在記憶體中的執行計畫時,請使用

recompile 

選項。encryption 

表示sql server 

加密syscomments 

表中包含

create procedure 

語句文字的條目。使用

encryption 

可防止將過程作為

sql server 

複製的一部分發布。

說明:在公升級過程中,

sql server 

利用儲存在

syscomments 

中的加密注釋來重新建立加密過程。

10、for replication

指定不能在訂閱伺服器上執行為複製建立的儲存過程。.使用

for replication 

選項建立的儲存過程可用作儲存過程篩選,且只能在複製過程中執行。本選項不能和

with recompile 

選項一起使用。

11、as

指定過程要執行的操作。

12、sql_statement

過程中要包含的任意數目和型別的

transact-sql 

語句。但有一些限制。

13、 n

是表示此過程可以包含多條

transact-sql 

語句的佔位符。

14、注釋/*和

*/之間的為注釋,可以包含一行和多行的說明文字。

15、 其他說明

儲存過程的最大大小為

128 mb

。二、儲存過程的優點都有哪些呢?

1. 儲存過程

只在創造時進行編譯即可,以後每次執行儲存過程都不需再重新編譯,而我們通常使用的

sql語句每執行一次就編譯一次

,所以使用儲存過程可提高資料庫執行速度。

2. 經常

會遇到複雜的業務邏輯和對資料庫的操作,這個時候就會用

sp來封裝資料庫操作。當對資料庫進行複雜操作時

(如對多個表進行

update,insert,query,delete

時),可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。可以極大的提高資料庫的使用效率,減少程式的執行時間,這一點在較大資料量的資料庫的操作中是非常重要的。在**上看,

sql語句和程式**語句的分離,可以提高程式**的可讀性。

3. 儲存

過程可以設定引數,可以根據傳入引數的不同重複使用同乙個儲存過程,從而高效的提高**的優化率和可讀性。

4. 安全性高

,可設定只有某此使用者才具有對指定儲存過程的使用權儲存過程的種類:(1

)系統儲存過程:以

sp_開頭

,用來進行系統的各項設定

.取得資訊

.相關管理工作,如

sp_help

就是取得指定物件的相關資訊。(2

)擴充套件儲存過程

以xp_開頭,

用來呼叫作業系統提供的功能

exec master..xp_cmdshell 'ping 10.8.16.1'(3

)使用者自定義的儲存過程

,這是我們所指的儲存過程常用格式

模版:create procedure procedue_name [@parameter data_type][output][with] as sql_statement

解釋:output

:表示此引數是可傳回的

with  recompile:

表示每次執行此儲存過程時都重新編譯一次

;encryption:

所建立的儲存過程的內容會被加密。

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

SQL Server 儲存過程

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

sql Server儲存過程

今天是執行計畫的第一天,沒日學習一點新東西,記錄下自己的心得體會。1.sql server資料庫連線語句 一般會有下面的四種情況 a.一般的遠端訪問的寫成這樣 data source ip initial catalog 資料庫名 userid 使用者名稱 password 密碼 b.本地訪問的寫成...