SQL之存储过程

--存储过程是指把一组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

猜你喜欢

转载自blog.csdn.net/yh12346789/article/details/80474624