储存程序 (Stored Procedure),又可称预储程序或者存储过程,是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象,它可以视为数据库中的一种函数或子程序。
外部程序需要使用 EXECUTE 或 CALL 来调用预存程序。
优缺点
优点
预存程序具有下列的好处:- 预存程序可封装,并隐藏复杂的商业逻辑。
- 预存程序可以回传值,并可以接受参数。
- 预存程序无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。
- 预存程序可以用在数据检验,强制实行商业逻辑等。
缺点
- 预存程序,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的预存程序。
- 预存程序的性能调校与撰写,受限于各种数据库系统。
支持预存程序的数据库
数据库系统 | 预存程序使用的编程语言 |
---|---|
CUBRID | Java |
DB2 | SQL PL or Java |
Firebird | PSQL (Fyracle also supports portions of Oracle's PL/SQL) |
Informix | SPL |
Microsoft SQL Server | Transact-SQL and various .NET Framework languages |
MySQL | own stored procedures, closely adhering to SQL:2003 standard. |
Oracle | PL/SQL or Java |
PostgreSQL | PL/pgSQL, can also use own function languages such as pl/perl or pl/php |
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
EXEC usp_AddProduct '2293891100011', 'MyProductCaption'
Comments
Post a Comment
https://gengwg.blogspot.com/