📜  使用存储过程的优缺点——SQL

📅  最后修改于: 2021-09-08 15:26:44             🧑  作者: Mango

存储过程是 SQL 中的一种代码,可以存储以备后用,并且可以多次使用。因此,每当您需要执行查询时,您只需调用存储过程即可,而不是调用它。您还可以将参数传递给存储过程,以便存储过程可以根据传递的参数值进行操作。

句法 :

CREATE PROCEDURE procedure_name
AS
sql_statement
GO; 

要执行存储过程 –

EXEC procedure_name;

例子 :

CREATE PROCEDURE SelectAllGeeks
AS
SELECT * 
FROM Geeks
GO; 

好处 :
存储过程的主要优点如下:

  1. 更好的性能 –
    由于存储过程编译一次并以可执行形式存储,因此过程调用快速有效。因此响应很快。可执行代码被自动缓存,因此降低了内存需求。
  2. 更高的生产力 –
    由于重复使用同一段代码,因此可以提高生产率。
  3. 使用方便 –
    要创建存储过程,可以使用任何Java集成开发环境 (IDE)。然后,它们可以部署在任何网络架构层上。
  4. 可扩展性——
    存储过程通过隔离服务器上的应用程序处理来提高可伸缩性。
  5. 可维护性——
    在服务器上维护程序比在各种客户端机器上维护副本要容易得多,这是因为脚本位于一个位置。
  6. 安全 –
    通过允许用户仅通过以定义者权限执行的存储过程来操作数据,可以限制对 Oracle 数据的访问。

缺点:
存储过程的主要缺点如下:

  1. 测试 –
    测试封装在存储过程中的逻辑非常困难。处理存储过程中的任何数据错误直到运行时才会生成。
  2. 调试——
    根据数据库技术,调试存储过程要么非常困难,要么根本不可能。一些关系数据库如 SQL Server 有一些调试功能。
  3. 版本控制 –
    存储过程不支持版本控制。
  4. 成本 –
    需要 DBA 形式的额外开发人员来访问 SQL 并编写更好的存储过程。这将自动产生额外的成本。
  5. 便携性——
    复杂的存储过程并不总是移植到同一数据库的升级版本。在从一种数据库类型 (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.