数据库实验 | 第1关:建立和调用存储过程(不带输出参数的存储过程)

任务描述

本关任务:
该实验是针对数据表jdxx,该数据表有四个字段,分别是省份(sf)、城市(cs)、区县(qxmc)、街道(name)。
例如,查询天心区(qxmc)的所有字段的值结果如图所示
数据库实验 | 第1关:建立和调用存储过程(不带输出参数的存储过程)_第1张图片

任务要求

建立存储过程
dqxx(in city varchar(10),in district varchar(10))
输入城市city和区县district的名称,显示乡x、镇z和街道jd、其他的个数
提示:即name字段含有乡、镇、街道及不包含上述选项的个数

调用过程
以长沙市和开福区为参数,调用dqxx过程
以厦门市和同安区为参数,调用dqxx过程

例如,以长沙市和岳麓区为参数,调用过程显示结果如下
乡 街道 镇 其他
1 9 1 0


相关知识

建立存储过程

命令格式:

CREATE PROCEDURE sp_name ( [proc_parameter] )
BEGIN    
过程体
END

设置语句结束符

注意:
DELIMITER //
在过程体前面使用DELIMITER 符号命令将其他符号(不是分号)作为语句结束符,从而使服务器可以完整地处理过程体中所有的sql语句。
DELIMITER ;
在过程结束后将语句结束符变为;

参数列表

([in|out|inout proc_name type][,in|out|inout proc_name type])

过程可以没有参数或多个参数,多个参数之间用逗号分隔
IN输入参数,使数据可以传递给存储过程
OUT输出参数,用于需要返回结果
INOUT输入输出参数 既可以充当输入参数也可以充当输出参数

声明局部变量

DECLARE 局部变量名 类型 [default 默认值]

过程体中使用的局部变量,必须在存储过程的开头处声明

显示表达式的值

SELECT 表达式 [as 列名]

计算并显示表达式的值


代码

use province;
#代码开始
delimiter $$
create procedure dqxx(in city varchar(10),in district varchar(10)) 
begin 
    declare x int;
    declare jd int;
    declare z int;
    declare qt int;
    select count(name) from jdxx where cs = city and qxmc = district and name like "%乡" into x;
    select count(name) from jdxx where cs = city and qxmc = district and name like "%街道" into jd;
    select count(name) from jdxx where cs = city and qxmc = district and name like "%镇" into z;
    select count(name) from jdxx where cs = city and qxmc = district and name not like "%镇" and name not like "%街道" and name not like "%乡" into qt;
    select x 乡, jd 街道, z 镇, qt 其他;
end $$
delimiter ;
call dqxx("长沙市", "开福区");
call dqxx("厦门市", "同安区");
#代码结束

你可能感兴趣的:(数据库,数据库,mysql)