預存程序,又稱儲存程序(英語:Stored Procedure),是在資料庫儲存複雜程式,以便外部程式呼叫的資料庫物件,可以視為資料庫的一種函式或子程式。
優缺點
預存程序具有下列的好處:
- 預存程序,往往客製化於特定的資料庫上,因為支援的程式語言不同。當切換到其他廠商的資料庫系統時,需要重寫原有的預存程序。
- 預存程序的效能調校與撰寫,受限於各種資料庫系統。
支援預存程序的資料庫
資料庫系統 | 預存程序使用的程式語言 |
---|---|
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'
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.