mysql 调用存储过程
2017-01-13 17:38
232 查看
一/项目描述:
根据authors表查询所有的作者,并在authortitle表中根据作者查询出单独的著书数量和合作著书数量,并存储到count表中二/sql查询语句
存储过程p3:DELIMITER $$ DROP PROCEDURE IF EXISTS p3$$ CREATE PROCEDURE `pubs`.`p3`(aid VARCHAR(20)) BEGIN DECLARE n INT DEFAULT 0; DECLARE tid VARCHAR(20); DECLARE single_num INT DEFAULT 0; DECLARE co_num INT DEFAULT 0; DECLARE total_num INT; DECLARE pd_num INT; DECLARE yb CURSOR FOR SELECT title_id,COUNT(1) AS COUNT FROM titleauthor AS ta WHERE ta.au_id=aid; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET n=1; OPEN yb; WHILE n=0 DO FETCH yb INTO tid,total_num; SELECT COUNT(*) INTO pd_num FROM titleauthor AS ta WHERE ta.title_id=tid; IF pd_num>1 THEN SET co_num=co_num+1; END IF; END WHILE; SET single_num=total_num-co_num; INSERT INTO count1 VALUES(aid,single_num,co_num); CLOSE yb; END$$ DELIMITER ;
存储过程p4:
DELIMITER $$ DROP PROCEDURE IF EXISTS p4$$ CREATE PROCEDURE `pubs`.`p4`() BEGIN DECLARE n1 INT DEFAULT 0; DECLARE aid VARCHAR(20); DECLARE yb CURSOR FOR SELECT au_id FROM AUTHORS; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET n1=1; OPEN yb; FETCH yb INTO aid; REPEAT CALL p3(aid); FETCH yb INTO aid; UNTIL n1=1 END REPEAT; CLOSE yb; END$$ DELIMITER ;
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- Android之获取手机上的图片和视频缩略图thumbnails
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 数据库链接字符串查询网站
- 解决mysql 开启logbin 导致存储过程报错
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)