SQL Server 的儲存程序是一組預先編譯並儲存在伺服器上的 Transact-SQL 陳述式集合,透過封裝重複性工作來提升開發效率。它支援使用者宣告變數、條件執行流程控制等強大程式設計功能,是資料庫開發中不可或缺的核心物件。
Transact-SQL 型(T-SQL 陳述式集合)與 CLR 型(參考 .NET Framework 組件中的公用靜態方法)。sp_,用於系統管理與資訊查詢。CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ [ OUT | OUTPUT ] ] [ ,...n ]
[ WITH <procedure_option> [ ,...n ] ]
[ FOR REPLICATION ]
AS { <sql_statement> [;][ ...n ] | <method_specifier> }
<procedure_option> ::=
[ ENCRYPTION ]
[ RECOMPILE ]
[ EXECUTE_AS_Clause ]
<sql_statement> ::= { [ BEGIN ] statements [ END ] }
<method_specifier> ::= EXTERNAL NAME assembly_name.class_name.method_name
[schema_name.]指定程序所屬的結構描述,預設為 dbo。善用結構描述可實現物件邏輯分組與權限管理。
-- 建立結構描述
CREATE SCHEMA yangyang8848;
GO
-- 建立屬於該結構描述的程序
CREATE PROC yangyang8848.AllGoods
AS SELECT * FROM Master_Goods;
GO
-- 執行時需冠上結構描述名稱
EXEC yangyang8848.AllGoods; -- 正確
EXEC AllGoods; -- 錯誤:找不到物件
[; number]允許同名程序以整數編號分組(如 proc_name;1, proc_name;2),DROP PROCEDURE proc_name 可一次刪除該群組所有編號程序。此為舊版相容功能,現代開發建議使用獨立命名。
CREATE PROC S1;1 AS SELECT * FROM Master_Goods; GO
CREATE PROC S1;2 AS SELECT * FROM Master_Location; GO
-- 執行預設為 ;1,指定編號執行:EXEC S1;2
-- 刪除群組:DROP PROC S1; -- 刪除 S1;1 與 S1;2