sqlserver数据存储小试牛刀

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

创建存储过程如下:

-----------------------------------

--查询所有用户

CREATE PROCEDURE proAdmin

AS
BEGIN
--存储过程查询所有数据  
--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

end  
go  
  
  select *from t_user;
declare @result varchar(50)  
exec @result=stu9 'java' 
select @result as '删除条数'  
--print @result
go  

  ====================================

  1. --存储过程根据用户学号来查询他的平均分  
  2. create proc stu9  
  3. @stuNo varchar(50),  
  4. @avg int output  
  5. as   
  6. begin  
  7.     set @avg=(select AVG(courseScore) from course where stuNo=@stuNo)  
  8.     --等同  
  9.     --select @avg=AVG(courseScore) from course where stuNo=@stuNo  
  10. end  
  11. go  
  12.   
  13. declare @avg int  
  14. exec stu9 '02',@avg output  
  15. print @avg  
  16. go  
  17.   
  18. --------------------------------------------------------------------------  
  19. --------------------------------------------------------------------------  
  20. --存储过程根据用户学号来联合查询用户信息和课程信息  
  21. create proc stu10  
  22. @stuNo varchar(50)  
  23. as  
  24.     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  
  25. go  
  26.   
  27. exec stu10 '02'  
  28. go  
  29.   
  30. --------------------------------------------------------------------------  
  31. --------------------------------------------------------------------------  
  32. --存储过程判断学号是否存在,不存在,插入用户信息,返回消息;存在,返回信息  
  33. create proc stu11  
  34. @stuNo varchar(50),  
  35. @stuName varchar(50),  
  36. @stuAge datetime,  
  37. @stuSex varchar(5),  
  38. @result varchar(50) output  
  39. as  
  40.     if exists (select * from student where stuNo=@stuNo)  
  41.         begin  
  42.             set @result='对不起,学号已存在!'  
  43.         end       
  44.     else  
  45.         begin  
  46.             insert into student   
  47.                 (stuNo,stuName,stuAge,stuSex)  
  48.             values   
  49.                 (@stuNo,@stuName,@stuAge,@stuSex)  
  50.             set @result='恭喜你,用户信息插入成功!'    
  51.         end  
  52. go  
  53.   
  54. declare @result varchar(50)  
  55. exec stu11 '06','王忠磊','1980-8-8 8:9:0','男',@result output  
  56. print @result  
  57.   
  58. --------------------------------------------------------------------------  
  59. --------------------------------------------------------------------------  
  60. --存储过程查询当前用户的平均成绩与总的平均成绩之间的关系  
  61. create proc stu12  
  62. @stuNo varchar(50)  
  63. as  
  64. declare @curAvg decimal(18,2)  
  65. declare @totalAvg decimal(18,2)  
  66. if exists(select * from course where stuNo=@stuNo)  
  67.     begin  
  68.         set @totalAvg=(select AVG(courseScore) from course)  
  69.         select @curAvg=AVG(courseScore) from course where stuNo=@stuNo  
  70.         print ('总的平均分:'+convert(varchar(18),@totalAvg))  
  71.         print ('该生的平均分:'+convert(varchar(18),@curAvg))  
  72.         if @curAvg>@totalAvg  
  73.             print '高于平均水平!'  
  74.         else   
  75.             print '低于平均水平!'   
  76.     end  
  77. else  
  78.     print '该生对应的分数信息不存在,请重新查询!'  
  79. go  
  80.   
  81. exec stu12 '03'  
  82. go  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值