直播中
建立存儲過程
存儲過程可以達到以下目的:
· 帶參數(shù)。
· 返回狀態(tài)值。
· 調(diào)用其它存儲過程。
· 在遠程服務(wù)器上執(zhí)行。
存儲過程在“sysobjects”系統(tǒng)表中有一個表項,其類型為“P”。存儲過程的文本存儲在“syscomments”系統(tǒng)表中。創(chuàng)建存儲過程需要使用Transact SQL命令CREATE PROCEDURE。
例如:
USE pubs
GO
CREATE PROCEDURE ap_GetAuthorsForPublisher
AS
SELECT a.au_lname,a.au_fname
FROM authors a, titleauthor ta, titles t, publishers p
WHERE a.au_id = ta.Au_id
AND ta.Title_id = t.title_id
AND t.pub_id = p.pub_id
AND p.pub_name = ’New Moon Books’
GO
CREATE PROCEDURE語句的語法如下:
CREATE PROC[DURE] procedure_name [;number]
[@parameter_name ][OUTPUT] [,_n] ]
[WITH {RECOMPILE | ENCRYPTION}]
[FOR REPLICATION]
AS
Number是用來對相同名字的過程進行分組的整數(shù)。分組是將所有的過程通過drop procedure語句組合到一個分組中。
@parameter_name指定參數(shù)的名稱。
RECOMPILE表示每次執(zhí)行過程時都要進行編譯。
ENCRYPTION表示過程的文本在“syscomments”表中要加密。
FOR REPLICATION表示過程不能在提交服務(wù)器上執(zhí)行。
將參數(shù)傳遞給存儲過程
存儲過程能夠接受參數(shù)。
注意:過程的參數(shù)也可以是用戶定義的數(shù)據(jù)類型。
給參數(shù)一個缺省值
用戶還可以為存儲過程中的參數(shù)定義缺省值。當(dāng)在執(zhí)行時沒有提供所需的參數(shù)時,系統(tǒng)就使用缺省值作為參數(shù)。如果既沒有定義缺省值,又沒有在執(zhí)行時提供參數(shù),則SQL Server就會返回一個錯誤。在存儲過程中定義缺省值,并使用一些邏輯檢測是否指定了參數(shù)從而采取相應(yīng)的行動,這是一種很好的習(xí)慣。
例如:
USE pubs
GO
CREATE PROCEDURE ap_GetAuthorsForPublisher
@PublisherName varchar(40) = ‘New Moon Books’
AS
SELECT a.au_lname,a.au_fname
FROM authors a, titleauthor ta, titles t, publishers p
WHERE a.au_id = ta.Au_id
AND ta.Title_id = t.title_id
AND t.pub_id = p.pub_id
AND p.pub_name = @PublisherName
GO