1. 无参数输入的存储过程:
DELIMITER $$ DROP PROCEDURE IF EXISTS `testUser`; CREATE PROCEDURE testUser() BEGIN SELECT * FROM `user` WHERE name = 'zz'; END $$ DELIMITER ; //调用 CALL testUser();
【说明】:
SQL 语句默认是以分号作为语句结束标志,
DELIMITER $$
则将语句结束标志改为$$,保证存储过程的完整, 因为存储过程中可能有多个语句
2. 带参数输入的存储过程:
DELIMITER $$ DROP PROCEDURE IF EXISTS `userById`; CREATE PROCEDURE userById(in num int) BEGIN SELECT * FROM `user` WHERE id = num; END $$ DELIMITER ; //调用 CALL userById(2);
【说明】:
in代表参数输入,num参数名,int为参数类型
调用时传入参数,则语句相当于SELECT * FROMuser
WHERE id = 2;
3. 存储过程批量插入构造数据:
利用存储过程往user表批量构造数据,startNum为起始序号,num为构造总条数
DELIMITER $$ DROP PROCEDURE IF EXISTS `insertBatch`; CREATE PROCEDURE insertBatch(in num int,in startNum int) BEGIN DECLARE i int DEFAULT 0; DECLARE user_name VARCHAR(10) DEFAULT "username"; WHILE i<num DO INSERT INTO user(id,name,age,sex) value(startNum,user_name,18,"0"); SET i = i+1; SET startNum = startNum+1; SET user_name = CONCAT("username",i); END WHILE; END $$ DELIMITER ; //调用:从id=3开始构造10条数据 CALL insertBatch(10,3);
【说明】:
DECLARE声明局部变量(只能在BEGIN-END内声明)
DECLARE i int DEFAULT 0;
SET i = i+1;SET 为变量赋值,此处每次循环递增1。SET i = i+1;
【调用结果】:
需要了解更多数据库技术:MySQL存储过程创建例子,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/dtteaching/814249.html