存储过程是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. |