SQL存储过程

什么是存储过程?
存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。

存储过程的好处?
1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。
2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。
3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。

首先创建一个数据表TestTable

CREATE TABLE TestTable(
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [UserName] [nvarchar](50) NULL,
 [Subject] [nvarchar](50) NULL,
 [Source] [numeric](18, 0) NULL
) ON [PRIMARY]
go
INSERT INTO TestTable ([UserName],[Subject],[Source]) 
 SELECT N'张三',N'语文',60 UNION ALL
 SELECT N'李四',N'数学',70 UNION ALL
 SELECT N'王五',N'英语',80 UNION ALL
 SELECT N'王五',N'数学',75 UNION ALL
 SELECT N'王五',N'语文',57 UNION ALL
 SELECT N'李四',N'语文',80 UNION ALL
 SELECT N'张三',N'英语',100
GO

创建完成后直接进行查询

select * from TestTable

 下面将使用存储过程进行增删改查操作

--创建存储过程
CREATE PROCEDURE 存储过程名称
AS
需要查询的SQL语句
GO
--调用存储过程
EXECUTE 存储过程名称
--删除存储过程
drop procedure 存储过程名称

 1、查询数据

CREATE PROCEDURE GetList
AS
select * from TestTable
GO
exec GetList

2、根据条件查询数据

create Procedure GetList
@Id nchar(20)
as
select * from TestTable where Id=@Id
go
exec GetList 1

3、插入数据

create Procedure InsertList
@UserName nchar(20),
@Subject nchar(20),
@Source int
as
insert into TestTable (UserName,Subject,Source) values(@UserName,@Subject,@Source)
go
exec InsertList '扯淡','天文',100

4、删除数据

create procedure delList
@Id int
as
delete TestTable where Id=@Id
go
exec delList 8

5、修改数据

create procedure UpdateList
@Id int,
@UserName nchar(20)
as
update TestTable set UserName=@UserName where Id=@Id
go
exec UpdateList 7,'张三三'

 

posted @ 2021-04-19 14:54  时光博客  阅读(659)  评论(0编辑  收藏  举报