任务描述
本关任务:
该实验是针对数据表jdxx,该数据表有四个字段,分别是省份(sf)、城市(cs)、区县(qxmc)、街道(name)。
例如,查询天心区(qxmc)的所有字段的值结果如图所示
任务要求
建立存储过程
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("厦门市", "同安区");
#代码结束