GO
SET QUOTED_IDENTIFIER ON
GO
创建存储过程如下:
-----------------------------------
--查询所有用户
CREATE PROCEDURE proAdmin
ASBEGIN
--存储过程查询所有数据
--begin...end 类似编程语言中的{}
SELECT * from t_user; --查询所有用户
END
GO
--执行所有单独的语句都写在go语句中
exec proAdmin;
GO
-------------------------------
--存储过程根据条件用户名查询用户信息
CREATE PROCEDURE proAdmin
@sname varchar(50) --声明全局变量
AS
BEGIN
--存储过程查询所有数据
--begin...end 类似编程语言中的{}
--存储过程根据条件用户名查询用户信息
select * from t_user u where u.id_user=@sname;
END
--select *from t_user;
exec proAdmin 2 --传递参数为2;
GO
-------------------------------------------------------------
--存储过程根据条件用户名查询用户信息
CREATE PROCEDURE proAdmin
@sname varchar(50)='a' --声明全局变量AS
BEGIN
--存储过程查询所有数据
--begin...end 类似编程语言中的{}
--SELECT * from t_user;
--存储过程根据条件用户名查询用户信息
select * from t_user u where u.userName=@sname;
END
GO
--exec proAdmin;
GO
--select *from t_user;
--exec proAdmin 2
exec proAdmin
GO
------------------------------------------------
--存储过程根据用户名查询是否存在这个用户信息
create proc stu4
@sname varchar(50),
@result varchar(8) output --输出参数
as
begin
--Count(1)和Count(*)实际上的意思是,评估Count()中的表达式是否为NULL,如果为NULL则不计数,而非NULL则会计数。
if (select COUNT(1) from t_user s where s.userName=@sname)>0--if exists (select COUNT(1) from student s where s.stuName=@sname)
set
@result='存在!'
else
set
@result='不存在!'
end
go
declare @result varchar(8)
exec stu4 'a',@result output
print @result
go
-------------
--存储过程内部设定局部变量用户名来查询用户信息
create proc stu5
as
declare @sname varchar(50) --局部变量声明
set @sname='a'
begin
select * from t_user s where s.userName=@sname
end
go
exec stu5
go
----------------------------------
--存储过程根据条件用户id查询用户名
create proc stu7@stuNo varchar(50)
as
declare @sname varchar(50)
set @sname=(select s.userName from t_user s where s.id_user=@stuNo)
select @sname as NAME --查询到的列取名为NAME
go
exec stu7 1
go
--------------------------------
------存储过程插入用户信息
create proc stu8
--identity insert设置为off时,主见自增不能插入值
@stuName varchar(255),@upwd varchar(255)
as
begin
insert into t_user
(userName,userPassword)
values
(@stuName,@upwd)
end
go
---==================
--存储过程根据用户名来删除对应的用户信息
--@@rowcount返回操作条数
--return返回信息,终止下面的操作
create proc stu9
@stuName varchar(50)
as
begin
delete from t_user where userName=@stuName
return @@rowcount
end
go
declare @result varchar(50)
exec @result=stu9 'Json'
select @result as '删除条数'
print @result
go
---------------
create proc stu9
@stuName varchar(50)
as
begin
delete from t_user where userName=@stuName
--@@Rowcount主要是返回上次sql语句所影响的数据行数,@@rowcount记录数据变更数量
--@@error记录错误,:set rowcount的限定对修改,删除一样有效,相当于top。
return @@rowcount
go
select *from t_user;
declare @result varchar(50)
exec @result=stu9 'java'
select @result as '删除条数'
--print @result
go
====================================
- --存储过程根据用户学号来查询他的平均分
- create proc stu9
- @stuNo varchar(50),
- @avg int output
- as
- begin
- set @avg=(select AVG(courseScore) from course where stuNo=@stuNo)
- --等同
- --select @avg=AVG(courseScore) from course where stuNo=@stuNo
- end
- go
- declare @avg int
- exec stu9 '02',@avg output
- print @avg
- go
- --------------------------------------------------------------------------
- --------------------------------------------------------------------------
- --存储过程根据用户学号来联合查询用户信息和课程信息
- create proc stu10
- @stuNo varchar(50)
- as
- select c.stuNo,s.stuName,s.stuAge,s.stuSex,c.courseName,c.courseScore from student s join course c on s.stuNo=c.stuNo where s.stuNo=@stuNo
- go
- exec stu10 '02'
- go
- --------------------------------------------------------------------------
- --------------------------------------------------------------------------
- --存储过程判断学号是否存在,不存在,插入用户信息,返回消息;存在,返回信息
- create proc stu11
- @stuNo varchar(50),
- @stuName varchar(50),
- @stuAge datetime,
- @stuSex varchar(5),
- @result varchar(50) output
- as
- if exists (select * from student where stuNo=@stuNo)
- begin
- set @result='对不起,学号已存在!'
- end
- else
- begin
- insert into student
- (stuNo,stuName,stuAge,stuSex)
- values
- (@stuNo,@stuName,@stuAge,@stuSex)
- set @result='恭喜你,用户信息插入成功!'
- end
- go
- declare @result varchar(50)
- exec stu11 '06','王忠磊','1980-8-8 8:9:0','男',@result output
- print @result
- --------------------------------------------------------------------------
- --------------------------------------------------------------------------
- --存储过程查询当前用户的平均成绩与总的平均成绩之间的关系
- create proc stu12
- @stuNo varchar(50)
- as
- declare @curAvg decimal(18,2)
- declare @totalAvg decimal(18,2)
- if exists(select * from course where stuNo=@stuNo)
- begin
- set @totalAvg=(select AVG(courseScore) from course)
- select @curAvg=AVG(courseScore) from course where stuNo=@stuNo
- print ('总的平均分:'+convert(varchar(18),@totalAvg))
- print ('该生的平均分:'+convert(varchar(18),@curAvg))
- if @curAvg>@totalAvg
- print '高于平均水平!'
- else
- print '低于平均水平!'
- end
- else
- print '该生对应的分数信息不存在,请重新查询!'
- go
- exec stu12 '03'
- go