版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、use jxgl-首先判断有没有已经建立up_getallstudents存储过程,有则先删除if exists(select name from sysobjects where name = 'up_getallstudents' and type = 'p' )drop procedure up_getallstudents-编写存储过程up_getallstudents,用于获取学生表students的所有记录create procedure up_getallstudentsasselect * from students-使用execute执行存储过
2、程up_getallstudentsexec up_getallstudents-也可写成execute up_getallstudents-编写一个存储过程up_insertstudent,完成学生表students数据的插入-1、不带默认值的参数create procedure up_insertstudentsid varchar(15), sname varchar(30), ssex char(10),sbirth datetime, sbirthplace varchar(300)asbegininsert into students(stu_id, stu_name, stu_s
3、ex, stu_birth, stu_birthplace)values(sid, sname, ssex, sbirth, sbirthplace)endexec up_insertstudent '200712110111', '肖玉峰', '男', '1975-02-05', '山东省滕州市木石镇'-等同于exec up_insertstudentsname = '肖玉峰', sid = '200712110111', ssex = '男', sbirth =
4、'1975-02-05', sbirthplace = '山东省滕州市木石镇'drop procedure up_insertstudentdelete students where stu_name = '肖玉峰'insert into students(stu_id, stu_name, stu_sex, stu_birth,stu_birthplace)values('200712110110', '马缪', '男', '1986-010-17 00:00:00.000', &
5、#39;广东广州')-编写一个存储过程up_delstudentbyname,根据输入的学生姓名,删除该学生记录 if object_id('up_delstudentbyname', 'p') is not nulldrop procedure up_delstudentbynamegocreate procedure up_delstudentbynamesname varchar(30)asbegin-调用存储过程的代码如下:exec up_delstudentbyname '马缪'select * from students-编写
6、一个存储过程up_getstuinformationbyname,根据输入的学生姓名,显示该学生的学号、姓名、课程名和成绩if object_id('up_getstuinformationbyname', 'p') is not nulldrop procedure up_getstuinformationbynamegocreate procedure up_getstuinformationbynamesname varchar(30)asbeginselect "S".stu_id, stu_name, cour_name, scor
7、efrom students "S", courses "C", course_score "CS"where "S".stu_id = "CS".stu_id and "CS".cour_id = "C".cour_id and stu_name = snameend-调用存储过程的代码如下:exec up_getstuinformationbyname '仇立权' -ok delete from students where stu_n
8、ame = sname end-2、带默认值的参数-编写一个存储过程up_insertstuwithdefault,给参数定义默认值,完成学生表students数据的插入drop procedure up_insertstuwithdefaultgocreate procedure up_insertstuwithdefaultsid varchar(15), sname varchar(30), ssex char(10) = '男',sbirth datetime, sbirthplace varchar(300) = '', semail varchar(
9、50) = ''asbegininsert into students(stu_id, stu_name, stu_sex, stu_birth, stu_birthplace, stu_email) values(sid, sname, ssex, sbirth, sbirthplace, semail)end-调用存储过程的代码如下:exec up_insertstuwithdefault sid = '11', sname = '赵小乐', sbirth = '1976-07-05'select * from student
10、s-3、带输出参数-在创建存储过程时,可以用关键字OUTPUT来创建一个输出参数,另外,调用时也必须给出OUTPUT关键字-根据给定的学生姓名,获取该生的平均成绩use jxglgocreate procedure up_getAvgScorebynameaname varchar(30), avgscore int outputasbeginselect avgscore = avg(score) from students "S", course_score "CS" where "S".stu_id = "CS&quo
11、t;.stu_id and "S".stu_name = anameend-调用过程代码declare avgscore int -avgscore可以改成任意变量名exec up_getAvgScorebyname '仇立权', avgscore output -okprint avgscore-不能写成print 'avgscore' 或print ('avgscore'),这是输出字符串-等同于select avg(score) from students s, course_score cwhere s.stu_id
12、= c.stu_id and s.stu_name = '仇立权'-4、带返回值的存储过程-()print语句可以将用户定义的消息返回给客户端-编写一个存储过程up_insertstudent2,在插入学生数据前,先判断一下学号是否存在, -如果存在,输出“要插入的学生的学号已经存在”;否则,插入学生数据,并返回”恭喜,数据插入成功“create procedure up_insertstudent2sid varchar(15), sname varchar (30), ssex char(10) = '男', sbirth datetimeasbeginif
13、 exists(select * from students where stu_id = sid)print ('要插入的学生的学号已经存在')-也可写成raiserror('要插入的学生的学号已经存在', 16, 1)elsebegininsert into students(stu_id, stu_name, stu_sex, stu_birth)values(sid, sname, ssex, sbirth)print('恭喜,数据插入成功')-raiserror('恭喜,数据插入成功', 16, 10)endenddro
14、p procedure up_insertstudent2select * from students-调用过程代码如下:exec up_insertstudent2 sid = '13', sname = '张小飞', sbirth = '1983-02-01' -okexec up_insertstudent2 sid = '10', sname = '张小龙', sbirth ='1988-01-08' -ok-()return 语句,return语句可以从过程、批处理或语句块中退出,不执行其
15、后继语句 create procedure up_delstudentbyname2sname varchar(30)asbegindelete from students where stu_name = snamereturn rowcount -行计数enddrop procedure up_delstudentbyname2-调用存储过程的代码如下:declare ret_val intexec ret_val = up_delstudentbyname2 '张小龙' -okselect ret_val as "删除的行"-也可写成print ret
16、_val-5、带变量的存储过程/*在存储过程可以定义变量,包括全局变量(变量名)和局部变量(变量名)。 用于保存存储过程中的临时结果编写存储过程up_getavgscorebyname2,根据输入的学生姓名,计算该学生的平均成绩。 根据该生平局成绩与全体学生平均成绩的关系,返回相应信息*/use jxglgocreate procedure up_getavgscorebyname2aname varchar(30), resStr varchar(30) outputasbegindeclare curAvg decimal(18,2)declare totalAvg decimal(18,
17、2)select totalAvg = avg(score) from course_scoreselect curAvg = avg(score) from students "S", course_score "CS" where "S".stu_id = "CS".stu_id and "S".stu_name = anameif curAvg > totalAvgset resStr = '高于平均分'elseset resStr = '低于平均分'
18、print ('总平均分为' + convert(varchar(18), totalAvg)print ('该生平均分' + convert(varchar(18), curAvg)print resStrdrop procedure up_getavgscorebyname2-调用存储过程的代码declare resstring varchar(30)exec up_getavgscorebyname2 '甘明', resstring output-这句和要求不一样,不知道哪里出问题-6、使用output游标参数-output游标参数用来将存
19、储过程的局部游标传递回执行调用的批处理、存储过程或触发器/*编写一个带有output型游标参数的存储过程up_getstudent_cursor, 再编写一个过程 up_printstudentbycursor, 对游标中的数据进行显示*/-存储过程up_getstudent_cursor的代码如下create procedure up_getstudent_cursorasbegin-存储过程printstudentbycursor代码如下:create procedure printstudentbycursorasdeclare Mycursor cursordeclare axh varchar(15)declare asn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版PEP六年级上册Unit5Whatdoeshedo第二课时课件
- 2024年经营学生托管使用房屋出租合同
- 乐器采购合同范本2024年
- 合同模板自建房施工合同2024年
- 2024年个人租房合同协议合同
- 三方出资合伙合同2024年
- 初中生英语单词记忆能力测试
- 比的意义苏教版教材的发展趋势
- 探春理家苏教版选修教学体会
- 人教版一年级上册生字卡片
- CDA数据分析师Level Ⅱ考试题库(含答案)
- 数学-九宫数独100题(附答案)
- 脓毒症休克应急演练预案
- 叙事疗法外化技术练习
- 游泳一级运动员申报表
- 风电场项目质量通病防治方案与控制措施(优秀工程方案)
- (精选幻灯片)招标投标法律风险及防控(含案例).ppt
- 三类体外诊断试剂《产品技术要求》
- 2009陕西省建设工程工程量清单计价规则(A4)(共62页)
- 现代西班牙语(课堂PPT)
- Appraisal Theory 功能语言学评价理论PPT精选文档
评论
0/150
提交评论