下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京市有研工程技术研究院有限公司2026届秋季校园招聘17人备考题库及参考答案详解
- 2025年宁夏中科碳基材料产业技术研究院招聘备考题库完整参考答案详解
- 2026年工程项目跟踪管理合同
- 2026年智能医疗数据血缘分析工具采购合同
- 工商银行的抵押合同(标准版)
- 2026年医院外部审计合同
- 中山大学附属第三医院粤东医院2026年合同人员招聘备考题库附答案详解
- 践行习近平生态文明思想解放思想促进高质量研讨材料
- 中华人民共和国药品管理法试题及答案
- 2025年烟台市检察机关公开招聘聘用制书记员的备考题库(24人)参考答案详解
- 吉安市农业农村发展集团有限公司及下属子公司2025年第二批面向社会公开招聘备考题库有答案详解
- 文冠果整形修剪课件
- 2025年盐城港控股招聘面试题库及答案
- 2026年益阳医学高等专科学校单招职业技能测试题库附答案
- 国家开放大学《商务英语4》期末考试精准题库
- 2025秋季《中华民族共同体概论》期末综合考试-国开(XJ)-参考资料
- 机械通气患者误吸预防及管理规范
- 2025年应急环境监测车行业分析报告及未来发展趋势预测
- AI生成时代虚拟生产力与生产关系变革
- 船舶进出港调度智能化方案
- 项目招标评标方案
评论
0/150
提交评论