下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年国家开放大学电大Oracle数据库编程形考任务4答案
形考任务4教学实践3
创建一个存储过程,实现在user.tables查询参数给出的表名是否存在,并从存储过程中返
回结果。
创建一个名称为sch的数据表,表结构如表1所示,将表2中的数据插入sch表中。
字段名数据类型主键外键非空唯一自增
idint(10)是否是是否
namevarchar(50)否否是否否
glassvarchar(50)否否是否否
表2:
idnameglass
1xiaomingglassl
2xiaojunglass2
第一步:创建一个sch表,并向sch表中插入表2中的数据,代码如下:
mysql>createtablesch
->(
->idint(lO),
->namevarchar(50),
->glassvarchar(SO)
->);
QueryOK,0rowsaffected(0.11sec)
mysql>insertintoschvaluefl/xiaoming'/glass1'),
->(Z/xiaojun'Jglass2');
QueryOK,2rowsaffected(0.05sec)
Records:2Duplicates:0Warnings:0
mysql>descsch;
+------+-------------+------+-----+---------+-------+
|Field|Type|Null|Key|Default|Extra|
+------+-------------+------+-----+---------+-------+
|id|int(10)|YES||NULL|
|name|varchar(50)|YES||NULL|
|glass|varchar(50)|YES||NULL|
3rowsinset(0.00sec)
•1
•2
•3
•4
5
6
•7
•8
•9
・10
•11
・12
•13
・14
•15
・16
•17
・18
•19
•20
•21
•22
通过select*fromsch来查看插入表格的内容,SQL语句如下:
idnameglass
1xiaomingglass1
2xiaojunglass2
第二步:创建一个存储函数用来统计表sch中的记录数。
mysql>createfunctioncount_sch()
->returnsint
->return(selectcount(*)fromsch);
QueryOK,0rowsaffected(0.05sec)
mysql>selectcount_sch();
|count_sch()|
2I
+
1rowinset(0.00sec)
•1
•2
•3
・4
•5
・6
•7
・8
•9
・10
11
•12
创建的存储函数名称为count_sch,通过selectcount_sch()查看函数执行的情况,这个表中只
有两条记录,得到的结果也是两条记录,说明函数成功执行。
第三步:创建一个存储过程,通过调用存储函数的方法来获取表sch中的记录数和sch表中
id的和。
创建一个存储过程add_id,同时使用前面创建的存储函数返回表sch中的记录数,计算出表
中所有的id之和。代码如下:
mysql>delimiter//
mysql>createprocedureaddjd(outcountint)
->begin
->declareitmpint;
->declarecurjdcursorforselectidfromsch;
->declareexithandlerfornotfoundclosecurjd;
->selectcount_sch()intocount;
->set@sum=0;
->opencurjd;
->repeat
->fetchcurjdintoitmp;
->ifitmp<10
->thenset@sum=@sum+itmp;
->endif;
->until0endrepeat;
->closecurjd;
->end//
QueryOK,0rowsaffected(0.06sec)
mysql>select@a,@sum//
|@a|@sum|
|NULL|NULL|
1rowinset(0.00sec)
mysql>delimiter;
•1
•2
•3
•4
•5
•6
•7
•8
•9
•10
・11
•12
•13
・14
•15
•16
•17
•18
•19
•20
・21
•22
•23
•24
•25
•26
•27
•28
表sch中只有两条记录,所有id的和为3,和预想的执行结果完全相同。这个存储过程创建
了一个curjd的光标,使用这个光标来获取每条记录的id,使用repeat循环语句来实现所
有id号相加。
几个小问题:
1、MySQL存储过程和存储函数有什么区别?
・本质上都是存储程序。函数只能通过return语句返回单个值或表对象;存储过程不
允许执行return,但可以通过out参数返回多个值。
・函数限制比较多,不能用临时表,只能用表变量,还有一些函数都不可用。存储过
程的限制相对就比较少。
・函数可以嵌入sql语句中使用,可以在select语句中作为查询语句中的一个部分调用,
而存储过程一般是作为一个独立的部分来执行。
2.存储过程中的代码可以改变吗?
・MySQL还不提供对已存在的存储过程代码的修改。如果必须修改存储过程,就必须
使用drop语句删除之后再重新编写,或者创建一个新的存储过程。
3.存储过程中可以调用其他存储过程吗?
存储过程包含用户定义的sql语句集合,可以使用call语句调用存储过程,当然在存储过程
中也可以使用call语句调用其他存储程序,但是不能使用drop语句删除其他存储过程。
4.存储过程的参数不能与数据表中的字段名相同。
在定义存储过程参数列表时,应注意把参数名与数据库表中的字段名区别开,否则将出现无
法预期的结果。
5.存储过程的参数可以使用中文吗?
一般情况下,可能会出现存储过程中传入中文参数的情况,例如,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 落实工作督查督办制度
- 2025湖南永州市机关事务管理局对外招聘3人参考考试试题附答案解析
- 2026中建三局第三建设工程有限责任公司校园招聘备考考试题库附答案解析
- 2026湖南长沙市芙蓉区东湖街道社区卫生服务中心招聘参考考试题库附答案解析
- JIS D 9401-2010 自行车.车架标准 Frame - Assembly for bicycles
- 2026河南平顶山文化艺术职业学院招聘48人备考考试题库附答案解析
- 2026河北邢台市临城县招聘森林消防专业队员8人备考考试题库附答案解析
- 2026北京石景山区教育系统事业单位招聘25人参考考试试题附答案解析
- 2026四川华丰科技股份有限公司招聘法务风控管理岗位1人备考考试试题附答案解析
- 煤矿安全生产科保密制度
- 云南省2026年普通高中学业水平选择性考试调研测试历史试题(含答案详解)
- 广东省花都亚热带型岩溶地区地基处理与桩基础施工技术:难题破解与方案优化
- 家里办公制度规范
- 基于知识图谱的高校学生岗位智能匹配平台设计研究
- GB 4053.3-2025固定式金属梯及平台安全要求第3部分:工业防护栏杆及平台
- 环氧抛砂防滑坡道施工组织设计
- 2025年下属辅导技巧课件2025年
- 2026中央广播电视总台招聘124人参考笔试题库及答案解析
- DB15∕T 3725-2024 煤矸石路基设计与施工技术规范
- 钢结构屋架拆除与安装工程施工方案
- GB/T 46197.2-2025塑料聚醚醚酮(PEEK)模塑和挤出材料第2部分:试样制备和性能测定
评论
0/150
提交评论