热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQL存储过程使用

usemaster;--切换到master数据库gocreatedatabasestuDBgousestuDB--选择当前数据库goCREATETAB
use master;    --切换到master数据库
go

create database stuDB
go

use stuDB    --选择当前数据库
go

CREATE TABLE StuInfo --创建学生信息表
(
    StuNo varchar(12) primary key,
    StuName varchar(20) not null ,
    StuAge int check(StuAge>=0 and StuAge<=120),
    StuSex char(2) check(StuSex='' or StuSex='') default(''),
    StuTel varchar(15),
    StuAddress varchar(50) default ('地址不详'),
    StuEmail varchar(50),
    birthday date,
    classname varchar(12)
)
go

CREATE TABLE Exam --创建学生成绩表
(
    ExamNo int primary key identity(1,1),
    StuNo varchar(12) foreign key references StuInfo(StuNo),
    Written decimal(10,2) check(Written>=0 and Written<=100),
    Lab decimal(10,2) check(Lab>=0 and Lab<=100)
)
go

 

 

--插入数据
insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13580901028','周文学','90-03-17','2222273','湖南衡阳','Y2T116');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550715006','陈辉煌','82-10-10','13588912530','江西全南县','Y2T48');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550808001','曾华军','86-08-22','13583020539','广东珠海','Y2T49');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13551219034','罗燕','83-11-07','13578696856','云南省潞西市','Y2T65');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550815003','黄志伟','87-11-13','13643088892','江西会昌县','Y2T50');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550815004','涂乾文','86-07-22','2228852','广东珠海','Y2T50');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550815015','唐宁','81-07-01','13812309868','广东珠海','Y2T50');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550826003','贝然','85-06-13','13882202173','广东珠海','Y2T60');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550808019','白生全','86-06-03','8828888','重庆','Y2T49');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13540925028','沈永强','81-06-23','13588065815','江苏南通市','Y2T50');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('21750710010','张键','85-07-18','8557378','广东江门','Y2T50');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550906016','吴家彬','82-09-22','8324282','珠海市斗门区','Y2T52');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550912004','邹城廷','85-10-15','8218358','广东珠海','Y2T53');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13540706014','娄智欣','85-09-21','8545256','江西峡江','Y2T42');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550304010','陈迪华','00-01-01','5612698','广东珠海','Y2T42');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550321013','陈福清','80-11-25','13751861125','江西于都县','Y2T42');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13551228001','陶正武','83-06-19','13824151800','湖南益阳市','Y2T42');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13540607014','杨振杰','75-08-10','13800138000','珠海','Y2A21');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550418023','鲁力','82-03-23','13727003870','广东珠海','Y2T44');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550513026','贺际勇','80-11-06','2628682','湖南常德市','Y2T44');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('51451226001','刘峰','82-02-06','8385613','湖南衡阳市','Y2T44');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550531024','陈学斌','82-02-03','8358801','广东珠海','Y2T45');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550531001','郑银河','81-08-26','13697788878','湖南隆回县','Y2T47');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550715014','陈卓','86-08-30','2210387','江西省于都县','Y2T47');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550715019','贾海波','85-04-10','13539599336','湖南蓝山县','Y2T47');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550912006','钟文康','84-05-15','13750086179','广东珠海市','S2T53');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13550912007','朱婉婷','83-08-11','13527719983','广东珠海','Y2T53');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13551011008','易虎','84-02-28','13631237777','四川安岳县','Y2T56');

insert into stuinfo (stuno,stuName,birthday,stutel,stuAddress,classname)
values('13551011013','陈挺','84-05-19','13433677109','珠海香洲','S2T56');


--插入成绩表
insert into Exam values('13540607014',95,86);
insert into Exam values('13540706014',55,56);
insert into Exam values('13540925028',65,86);
insert into Exam values('13550304010',60,60);
insert into Exam values('13550321013',89,null);
insert into Exam values('13550418023',91,60);
insert into Exam values('13550513026',60,76);
insert into Exam values('13550531001',null,null);
insert into Exam values('13550531024',null,86);
insert into Exam values('13550715006',54,46);
insert into Exam values('13550715014',46,76);
insert into Exam values('13550715019',32,86);
insert into Exam values('13550808001',86,36);

--查询数据
select * from stuinfo
select * from Exam

 

--创建存储过程
create proc proc_stuInfo
as 
   select * from StuInfo
go

--调用存储过程
exec proc_stuInfo
go

--创建存储过程
create proc Proc_passStu
as
 select stuname,stuage,stusex,stuADDress,written,Lab
from  StuInfo s ,Exam e where s.StuNo=e.StuNo
go

--调用存储过程
exec Proc_passStu
go
 select stuname,stuage,stusex,stuADDress,written,Lab
from  StuInfo s ,Exam e where s.StuNo=e.StuNo


--创建带输入参数的存储过程
create proc proc_passStu1
@written int,
@Lab int
as
 select stuname,stuage,stusex,stuADDress,written,Lab
from  StuInfo s ,Exam e where s.StuNo=e.StuNo
and written>=@written and Lab>=@Lab
go

--调用带参存储过程
exec proc_passStu1 60,60
go

--创建带输入参数并赋默认值的存储过程
create proc proc_passStu2
@written int=60,
@Lab int=60
as
 select stuname,stuage,stusex,stuADDress,written,Lab
from  StuInfo s ,Exam e where s.StuNo=e.StuNo
and written>=@written and Lab>=@Lab
go


--调用存储过程
exec proc_passStu2
exec proc_passStu2 70,60

--笔试及格线为70,机试默认60
exec proc_passStu2 70

--笔试及格线默认60,机试及格线为70
exec proc_passStu2 default,70
exec proc_passStu2 @lab=70
go


--创建带输出参数的存储过程
create proc proc_passStu3
@passnum int output
as
   select @passNum=count(*) from Exam
    where Written>=60 and Lab>=60
go


declare @num int
exec proc_passStu3 @num output
print '本次及格人数:'+convert(varchar(5),@num)



--创建带输入参数并赋默认值及输出参数的存储过程
--没有默认值的参数定义在前面比较好
create proc proc_passStu4
@failnum int output,
@written int=60,
@Lab int=60
as
    declare @writtenavg decimal(5,2),@labavg decimal(5,2)
    select @written=AVG(written) from Exam where written is not null
    select @lab=AVG(Lab) from Exam where Lab is not null
    print '笔试平均分'+ convert(varchar(2),@written)
    print '机试平均分'+ convert(varchar(2),@lab)
    
    print '本班考成绩:'+
    case
        when @writtenavg>=70 and @labavg>=70 then '优秀'
        when @writtenavg>=60 and @labavg>=60 then '一般'
        else '较差'
    
    end
    
    print '-------------------------------------------------'
    print '           参加本次考试没有通过的学员'
    print '-------------------------------------------------'
    
        select s.StuName,e.StuNo,written,lab
        from Exam e,StuInfo s where e.StuNo=s.StuNo
        and (written<@written or lab <@Lab)

    select @failnum =count(*)from Exam
    where written<@written or lab <@Lab
    
go
declare @failnum int
exec  proc_passStu4 @failnum output 
print '本次不及格的人数:'+convert(varchar(5),@failnum)
go



--注意条件要加小括号
select StuName,Written,Lab 
from StuInfo s,Exam e
where s.StuNo = e.StuNo 
and (Written<60 or Lab<60)

--使用join就不用
select StuName,Written,Lab 
from StuInfo s join Exam e
on s.StuNo = e.StuNo
where Written<60 or Lab<60

 


推荐阅读
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
author-avatar
cb
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有