存储过程是 SQL 中的一种代码,可以存储以备后用,并且可以多次使用。因此,每当您需要执行查询时,您只需调用存储过程即可,而不是调用它。您还可以将参数传递给存储过程,以便存储过程可以根据传递的参数值进行操作。
句法 :
CREATE PROCEDURE procedure_name
AS
sql_statement
GO;
要执行存储过程 –
EXEC procedure_name;
例子 :
CREATE PROCEDURE SelectAllGeeks
AS
SELECT *
FROM Geeks
GO;
好处 :
存储过程的主要优点如下:
- 更好的性能 –
由于存储过程编译一次并以可执行形式存储,因此过程调用快速有效。因此响应很快。可执行代码被自动缓存,因此降低了内存需求。 - 更高的生产力 –
由于重复使用同一段代码,因此可以提高生产率。 - 使用方便 –
要创建存储过程,可以使用任何Java集成开发环境 (IDE)。然后,它们可以部署在任何网络架构层上。 - 可扩展性——
存储过程通过隔离服务器上的应用程序处理来提高可伸缩性。 - 可维护性——
在服务器上维护程序比在各种客户端机器上维护副本要容易得多,这是因为脚本位于一个位置。 - 安全 –
通过允许用户仅通过以定义者权限执行的存储过程来操作数据,可以限制对 Oracle 数据的访问。
缺点:
存储过程的主要缺点如下:
- 测试 –
测试封装在存储过程中的逻辑非常困难。处理存储过程中的任何数据错误直到运行时才会生成。 - 调试——
根据数据库技术,调试存储过程要么非常困难,要么根本不可能。一些关系数据库如 SQL Server 有一些调试功能。 - 版本控制 –
存储过程不支持版本控制。 - 成本 –
需要 DBA 形式的额外开发人员来访问 SQL 并编写更好的存储过程。这将自动产生额外的成本。 - 便携性——
复杂的存储过程并不总是移植到同一数据库的升级版本。在从一种数据库类型 (Oracle) 移动到另一种数据库类型 (MS SQL Server) 的情况下尤其如此。
Advantages | Disadvantages |
---|---|
It is faster. | It is difficult to debug. |
It is pre-compiled. | Need expert developer, since difficult to write code. |
It reduces network traffic. | It is database dependent. |
It is reusable. | It is non-portable. |
It’s security is high . | It is expensive. |