SQL Server 存储过程入门
1.存储过程的定义:
存储过程是一组预编译的SQL语句和控制流程的代码块,它们被存储在数据库中,并可以在需要时被调用执行。存储过程通常用于执行常见的数据库操作,如插入、更新和删除数据,以及执行复杂的业务逻辑。存储过程一次编译,永久有效,在数据量十分庞大的情况下使用存储过程可以倍速提高效率。
2.存储过程的作用与好处:
-
预编译:存储过程在首次执行前会被编译成二进制代码,这样可以提高执行效率。
-
可重用性:存储过程可以在多个地方被调用,避免了重复编写相同的SQL语句。
-
安全性:存储过程可以对数据库的访问权限进行控制,只允许授权的用户执行。
-
简化复杂操作:存储过程可以包含控制流程的代码,使得执行复杂的业务逻辑变得简单。
-
提高性能:存储过程可以减少网络传输的数据量,提高数据库的性能。
3.存储过程的基本语法:
(1)创建
创建存储过程可以使用SQL Server Management Studio(SSMS)等工具,以下是创建存储过程的一般步骤:
-
使用CREATE PROCEDURE语句创建存储过程的模板。语法如下:
CREATE PROCEDURE procedure_name @parameter1 datatype, @parameter2 datatype, ... AS BEGIN -- 存储过程的代码逻辑 END
ps:
- procedure_name:存储过程的名称。
- @parameter1, @parameter2, …:存储过程的输入参数,可以根据需要指定多个参数,并指定对应的数据类型。
- AS和BEGIN/END之间是存储过程的代码逻辑。
-
在BEGIN和END之间编写存储过程的代码逻辑。可以包含各种SQL语句、条件语句、循环语句、变量和参数等。
-
执行CREATE PROCEDURE语句,将存储过程保存到数据库中。
(2)使用
EXEC [schema_name.]procedure_name @parameter1 = value1, @parameter2 = value2, ...
4.存储过程的3个示例:
下面是三个创建和使用存储过程的示例:
(1)创建一个Contact表的名为“Contactproc”,无参,用于查询Contact表中的所有内容:
CREATE PROCEDURE Contactproc
AS
BEGIN
select * from Contact
END
exec Contactproc
(2)创建一个Contact表的名为“ContactprocN”,含一个参数,用于模糊查询姓名的存储过程:
CREATE PROCEDURE ContactprocN
@Name nvarchar(50)
AS
BEGIN
SELECT * FROM Contact WHERE Name LIKE '%' + @Name + '%'
END
exec ContactprocN @Name = '王'
(3)创建一个Contact表的名为ContactprocNG,含两个参数,查询条件是姓+群组
Alter PROCEDURE ContactproNG
@Name nvarchar(50),
@GroupId int
AS
BEGIN
select * from Contact Where Name LIKE @Name + '%' AND GroupID = @GroupId
END
exec ContactproNG @Name = '张',@GroupID = '2'