SQL之存储过程

时间:2021-04-22 03:03:02
--存储过程是指把一组sql语句集集中在一起,存储在数据库中,当要使用这些语句的时候直接调用该存储过程的名称即可。

--存储过程只在创建的时候编译一次,再次调用时不会编译。

--创建用户信息数据表 
create table student ( id int identity(1,1),--递增1, stuNo varchar(50) primary key, --唯一键 stuName varchar(50), stuAge datetime, stuSex varchar(5) ) --创建用户分数数据表 create table course ( id int identity(1,1),--递增1, stuNo varchar(50), courseName varchar(50), courseScore decimal ) --插入数据 insert into student(stuNo,stuName,stuAge,stuSex) values('01','王男','1996-08-27 09:00:00.000','男') insert into student values('02','杨幂','1995-4-20 6:0:0','女'), ('03','程峰','1988-9-17 15:30:0','男') insert into course values('02','思想政治','85.5'), ('02','数学','70'), ('02','语文','80'), ('02','物理','90'), ('02','化学','65'), ('02','英语','96') insert into course values('03','思想政治','60'), ('03','数学','65'), ('03','语文','84'), ('03','物理','70'), ('03','化学','76'), ('03','英语','54') --1.创建存储过程 create procedure proc_1 as begin select * from student end go --调用存储过程 execute proc_1 --2.创建存储过程 create procedure proc_1 @a int, --声明全局变量 @b varchar(9) as begin select * from student where stuName like @b end go --调用有参存储过程时,参数不能少。形参与实参按位置对应 execute proc_1 1,'杨_' --把参数放在括号中也是一样的 create procedure proc_1( @a int, --声明全局变量 @b varchar(9) ) as begin select * from student where stuName like @b end go --调用有参存储过程时,参数不能少。形参与实参按位置对应 execute proc_1 1,'杨_' --3.创建存储过程 create procedure proc_1 @a int, @b varchar(9)='_幂' --声明全局变量,有初始值 as begin select * from student where stuName like @b end go --调用存储过程,@b有默认值可以不传参,也可以传默认值,传的值会代替初始值 execute proc_1 1,default --3.创建存储过程 create procedure proc_1 @a int, @b varchar(9)='_幂' --声明全局变量,有初始值 as begin --set @name=*或select @name=*,给变量赋值 set @b =(select stuName from student where stuName like @b) end select @b --select @name 输出结果 go -- execute proc_1 1 --4.创建存储过程 create procedure proc_1 @a int output, @b varchar(9)='_幂' output as begin set @b =(select stuName from student where stuName like @b) end select @a --@a输出传来的@a1 select @b go declare @a1 int,@b1 varchar(9) -- declare声明变量 set @a1=2 --output表示用于得到返回的数据,需要传变量 --传output参数时,形参必须声明为output execute proc_1 @a1 output --输出返回的@a值 select @a1 --查看数据库里的所有存储过程 select * from sysobjects where xtype='p' --查看存储过程信息 execute sp_helptext proc_name1 --删除 drop procedure proc_name1