存储程序

-{zh-cn:存储过程; zh-tw:預存程序;}-，又稱儲存程序（），是在資料庫儲存複雜程序，以便外部程式呼叫的資料庫物件，可以視為資料庫的一種函數或子程序。

優缺點
優點
預存程序具有下列的好處：
 預存程序可封裝，並隱藏複雜的商業邏輯。
 預存程序可以回傳值，並可以接受參數。
 預存程序無法使用 SELECT 指令執行，因為它是子程序，與檢視表、資料表或使用者定義函數不同。
 預存程序可以用在資料檢驗，強制實行商業邏輯等。

缺點
預存程序，往往客製化於特定的資料庫上，因為支援的程式語言不同。當切換到其他廠商的資料庫系統時，需要重寫原有的預存程序。
預存程序的效能調校與撰寫，受限於各種資料庫系統。

支援預存程序的資料庫
 資料庫系統 預存程序使用的程式語言 CUBRID Java DB2 SQL PL 或 Java Firebird PSQL (Fyracle 亦支援部分 Oracle 的 PL/SQL) Informix SPL Microsoft SQL Server Transact-SQL 及多種 .NET Framework 語言 MySQL 自己標準的預存程序，很接近 SQL:2003 標準 Oracle PL/SQL 或 Java PostgreSQL PL/pgSQL，亦可使用自己的函式語這，例如 pl/perl 或 pl/php SAP SQLScript 或 R Sybase ASE Transact-SQL

 範例 

預存程序是資料庫物件之一，必須使用資料定義語言來建立，例如：
以下範例，以Microsoft的SQL Server所以採用的T-SQL語法表示。
CREATE PROCEDURE usp_AddProduct
(
   @Barcode varchar(13),
   @Caption nvarchar(50)
)
AS
BEGIN

   IF LEN(@Barcode) < 13 
      RAISERROR('Barcode length is too short.')

   INSERT INTO MyProducts (Barcode, Caption) VALUES (@Barcode, @Caption)

END

外部程序需要使用 EXECUTE 或 CALL 來呼叫預存程序。

EXEC usp_AddProduct '2293891100011', 'MyProductCaption'

Category:数据库管理系统
Category:计算机编程