什么是存储过程?
存储过程可以说是一个记录集吧,它是由一些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,'张三三'