本文主要是介绍第13关:存储过程1、第14关:存储过程2。(2021数据库期末一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
首先需要学习和了解的知识
第13关:存储过程1
任务描述
答案
第14关:存储过程2
任务描述
答案
本篇博客的答案博主是学习别人得来的,敢于借鉴和学习哈哈!!
首先需要学习和了解的知识
- 了解什么是存储过程以及存储过程的基本语法。(作者博客专栏或者b站学习)
- 了解在命令行中,执行创建存储过程的SQL时。需要通过关键字 delimiter 指定SQL语句的结束符。
(本题中的答案有规定的格式,不能更改,否则提交不正确!!)
- 存储过程中的 begin ... end 之中是写 SQL语句的相关代码的。
- 在创建存储过程时,参数列表中:输入参数前加 in ,返回值后加 out 。
- 其它的就是可以用输入参数,然后给返回值赋值用:select 字段值... into。
- 本题目中在查询的过程中涉及到连接查询的相关知识。
第13关:存储过程1
任务描述
湖南人口hnpeople数据表如下所示
各字段含义如下
cs(城市)、qx(区县)、rk(人口)、man(男)、woman(女)、child(儿童)、adult(成人)、old(老人)
本关任务:
13.建立存储过程xbcx,输入城市名称,返回该城市的男性人口百分比,女性人口百分比,要求保留两位小数。
调用该存储过程,将结果赋给变量@lx和@nx
开始你的任务吧,祝你成功!
答案
(该题的测试点:就是测试输入的长沙市,返回它的男性、女性人口比)
- 注意格式不能更改,上方有个 " delimiter // " 不能修改(应该是一个结束标志用法声明)
use rkpc; #代码开始delimiter //create procedure xbcx(in city_name varchar(20), out lx decimal(5,2), out nx decimal(5,2)) begin-- 计算男性人口百分比select sum(man) * 100.0 / sum(man + woman) into lx …delimiter ;call xbcx('长沙市', @lx, @nx);#代码结束select @lx,@nx;
第14关:存储过程2
任务描述
数据库人口普查rkpc有数据表qgrk,有省份sf、名称name、人口rk字段,数据如下所示
有数据表qgqh,有省份sf、城市city、区县qx、代码dm字段,数据如下所示
本关任务:
建立存储过程sfcx(in sfmc varchar(15))
根据输入的省份名称,建立数据表sfxx,将该省的省份名称sf、城市city、区县qx\代码dm、人口rk各字段的信息存入到数据表数据表sfxx。
开始你的任务吧,祝你成功!
答案
(本题的任务根据题目给出的:要在存储过程中完成的SQL语句任务是创建一张表,然后给表中添加一些符合条件的数据,而题目中其实就是要湖南省的数据。其次就是注意本题的描述与测试相矛盾,所以应该将创建的字段 "city" 改成 "cs")
- 注意格式不能更改,上方有个 " delimiter // " 不能修改(应该是一个结束标志用法声明)
use rkpc; #代码开始delimiter //create procedure sfcx(in sfmc varchar(15)) begin-- 首先,创建新表sfxx,如果表不存在的话create table if not exists sfxx (sf varchar(15),cs varchar(50),qx varchar(50),dm varchar(50),rk int);-- 接着,向新表中插入数据insert into sfxx (sf, cs, qx, dm, rk)select qgrk.sf, qgqh.cs, qgqh.qx, qgqh.dm, qgrk.rkfrom qgrkjoin qgqh on qgrk.sf = qgqh.sfwhere qgrk.sf = '湖南省' and qgrk.name=qgqh.qx;end //delimiter ;#代码结束call sfcx("湖南省"); select * from sfxx;
这篇关于第13关:存储过程1、第14关:存储过程2。(2021数据库期末一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!