SQL | PL/SQL 中的过程
PL/SQL 是一种块结构语言,它使开发人员能够将 SQL 的强大功能与过程语句相结合。
PL/SQL 中的存储过程只不过是一系列可以存储在数据库目录中的声明性 SQL 语句。可以将过程视为函数或方法。它们可以通过触发器、其他过程或Java、 PHP等应用程序调用。
一个块的所有语句一次全部传递给 Oracle 引擎,这提高了处理速度并减少了流量。
好处:
- 它们导致应用程序的性能改进。如果一个过程在单个连接中的应用程序中被频繁调用,则交付该过程的编译版本。
- 它们减少了数据库和应用程序之间的流量,因为冗长的语句已经输入数据库,不需要通过应用程序一次又一次地发送。
- 它们增加了代码的可重用性,类似于函数和方法在其他语言(如 C/C++ 和Java)中的工作方式。
缺点:
- 存储过程会导致大量内存使用。数据库管理员应该决定一个上限,即有多少存储过程对于特定应用程序是可行的。
- MySQL 不提供调试存储过程的功能。
创建存储过程的语法
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Comments --
CREATE PROCEDURE procedure_name
= ,
= ,
=
AS
BEGIN
-- Query --
END
GO
例子:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE GetStudentDetails
@StudentID int = 0
AS
BEGIN
SET NOCOUNT ON;
SELECT FirstName, LastName, BirthDate, City, Country
FROM Students WHERE StudentID=@StudentID
END
GO
修改现有存储过程的语法
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Comments --
ALTER PROCEDURE procedure_name
= ,
= ,
=
AS
BEGIN
-- Query --
END
GO
例子:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE GetStudentDetails
@StudentID int = 0
AS
BEGIN
SET NOCOUNT ON;
SELECT FirstName, LastName, City
FROM Students WHERE StudentID=@StudentID
END
GO
删除过程的语法:
DROP PROCEDURE procedure_name
例子:
DROP PROCEDURE GetStudentDetails