数据库 存储过程

存储过程

简单介绍存储过程的含义和使用

含义

存储过程(Stored Procedure)是大型数据库系统中,一组为完成特定功能的SQL程序代码.它已经过编译后存储在数据库中,用户可以通过制定的存储过程名和参数来执行它

优点

1.执行速度更快
存储过程是在创建时被编译和优化过,调用一次后相关信息就保存在数据库中,同时内存会保留一份存储过程,下次调用就可以直接从内存中调用执行,不占用CUP资源.
2.存储过程可以减少网络通信流量
一个百行T-SQL代码的操作可以通过执行一条过程代码替换,且不需要在网络中发送数百行代码.
3.存储过程允许模块化设计
当创建后即可在程序中调用多次,这可以改进应用程序的可维护性,并允许与应用程序统一访问数据库.
4.存储过程安全性更高
可以使用数据库的安全机制限制对数据库的访问,如授权某用户只能执行不能修改存储过程,同时它存储过程可以加强应用程序的安全性使其不受SQL注入工具.
5.存储过程允许延迟绑定
可以穿件引用尚不存在的表,在创建存储过程中只检查语法,知道第一次执行该存储过程时才对其编译,如果引用的表不存在能创建存储过程,但运行会失败.

语法

1
2
3
4
5
6
7
CREATE PROC[EDURE] <存储过程名称>     -- 定义存储过程名称
[ @参数名称 参数类型] -- 定义传值参数及类型
[=default][OUTPUT][,...n1] -- 定义参数的属性:默认值,返回值
AS
BEGIN
SQL 语句[,...n2] --执行的操作
END

参数也可以有默认值

1
2
3
4
5
CREATE PROC proc_student_ByIDAndName_select
@ID char(10),@Name nvarchar(5)='张莉'
as
select sname,ssex,sdepartment from student where s_id=@ID and sname=@Name

有返回值的

1
2
3
4
5
CREATE PROC proc_student_ByIDAndName_Output
@ID char(10),@Name nvarchar(5) OUTPUT
as
select @Name=sname from student where s_id=@ID

使用

带参数

EXEC proc_student_ByIDAndName_select @ID= '20070102',@Name='张建'

有返回值

1
2
3
DECLARE @NAME_1 nvarchar(5)   
EXEC proc_student_ByIDAndName_Output @ID='20070101' ,@Name=@NAME_1 OUTPUT
PRINT @NAME_1

另一个例子

1
2
3
4
5
6
7
8
CREATE PROCEDURE PR_Sum 
@a int,
@b int,
@sum int output
AS
BEGIN
set @sum=@a+@b
END
1
2
3
4
--调用存储过程 
declare @sum2 int
exec PR_Sum 1,2,@sum2 output
print @sum2

定义变量@NAME_1,

转载

C# 数据库存储过程的讲解应用_存储过程是用来干什么的-CSDN博客

SQL – 存储过程(详细)_sql 存储过程-CSDN博客


数据库 存储过程
http://zanderchan666.github.io/2023/10/18/存储过程/
作者
Zander
发布于
2023年10月18日
许可协议