系統表 sysobjects (type='P') 儲存物件項目,syscomments 儲存程式碼。使用 CREATE PROCEDURE。
CREATE PROC[EDURE] procedure_name [;number]
[@parameter datatype [OUTPUT] [, ...]]
[WITH {RECOMPILE | ENCRYPTION}]
[FOR REPLICATION]
AS
-- 程序主體
number:同名程序分組整數,用於 DROP PROCEDURE 批次刪除RECOMPILE:每次執行重新編譯ENCRYPTION:syscomments 加密FOR REPLICATION:不可在發行伺服器執行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 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