学习SQL Server存储过程:实例演示带你熟悉
1. 什么是存储过程
在SQL Server中,存储过程是一组为了完成特定任务的SQL语句集合。存储过程通常会被编写、测试并保存在数据库中供后续使用,从而提高了执行效率并避免了SQL注入攻击。
存储过程的好处:
提高了SQL语句的复用性
可以减少网络数据传输量
可以避免SQL注入攻击
可以在存储过程中使用控制结构,提高执行效率
2. 创建存储过程
2.1 定义存储过程
创建存储过程之前,需要定义存储过程的名称、参数以及SQL语句等内容。
CREATE PROCEDURE GetProductById
(
@productId INT
)
AS
BEGIN
SELECT * FROM Products WHERE ProductId = @productId
END
上面的代码定义了一个名为GetProductById的存储过程,该过程接收一个参数@productId,返回匹配该参数的产品信息。
2.2 创建存储过程
定义存储过程之后,可以使用CREATE PROCEDURE语句来创建存储过程。
CREATE PROCEDURE GetProductById
(
@productId INT
)
AS
BEGIN
SELECT * FROM Products WHERE ProductId = @productId
END
创建存储过程的注意事项:
存储过程名称必须唯一
存储过程可以有输入参数、输出参数或者两者兼有
在存储过程中可以定义控制结构,如IF、WHILE等,从而提高执行效率
存储过程一旦被创建,可以被多次调用
3. 执行存储过程
3.1 执行简单存储过程
执行存储过程可以使用EXECUTE或者EXEC语句。
EXECUTE GetProductById 1
上面的代码执行了一个名为GetProductById的存储过程,并传入了参数1。
3.2 执行带输出参数的存储过程
存储过程可以有输出参数,使用时需要在存储过程定义时声明变量类型和名称,如下所示:
CREATE PROCEDURE GetProductNameById
(
@productId INT,
@productName NVARCHAR(50) OUTPUT
)
AS
BEGIN
SELECT @productName = ProductName FROM Products WHERE ProductId = @productId
END
上面的存储过程定义了一个名为GetProductNameById的存储过程,该过程接收一个参数@productId并返回产品名称@productName。
执行存储过程时需要为@productName声明一个输出参数,并使用OUTPUT关键字。
DECLARE @productName NVARCHAR(50)
EXECUTE GetProductNameById 1, @productName OUTPUT
SELECT @productName
上面的代码执行了一个名为GetProductNameById的存储过程,并传入参数1,返回产品名称。
4. 修改存储过程
修改存储过程可以使用ALTER PROCEDURE语句。
ALTER PROCEDURE GetProductById
(
@productId INT
)
AS
BEGIN
SELECT * FROM Products WHERE ProductId = @productId AND IsActive = 1
END
上面的代码修改了存储过程GetProductById,增加了一个条件,仅返回IsActive为1的产品信息。
5. 删除存储过程
删除存储过程可以使用DROP PROCEDURE语句。
DROP PROCEDURE GetProductById
上面的代码删除了名为GetProductById的存储过程。
6. 总结
SQL Server存储过程是一组为了完成特定任务的SQL语句集合。存储过程可以提高SQL语句的复用性、减少网络数据传输量、避免SQL注入攻击、在存储过程中使用控制结构,提高执行效率等。
创建存储过程可以使用CREATE PROCEDURE语句,执行存储过程可以使用EXECUTE或者EXEC语句。存储过程可以有输出参数,使用输出参数时需要在存储过程定义时声明变量类型和名称,并在执行存储过程时为其声明一个输出参数。
修改存储过程可以使用ALTER PROCEDURE语句,删除存储过程可以使用DROP PROCEDURE语句。