mysql 存储过程 demo

-- 查看存储过程
SHOW PROCEDURE STATUS;

-- 显示pro存储过程的详细信息
SHOW CREATE PROCEDURE pro;

-- 删除pro存储过程
DROP PROCEDURE IF EXISTS pro;

-- 创建简单的存储过程
DELIMITER //
DROP PROCEDURE IF EXISTS pro//
CREATE PROCEDURE pro()
BEGIN
SELECT 1;
END//
DELIMITER ;

-- 调用存储过程
CALL pro();

-- 创建带输入参数的存储过程
DELIMITER //
DROP PROCEDURE IF EXISTS pro//
CREATE PROCEDURE postVisitor(IN input INT)
-- 批量插入visitor数据
BEGIN
-- 声明一个int类型的变量
DECLARE i INT;
SET i = 0;
WHILE i < input DO
INSERT INTO visitor(hid,ecid,cid,uid,`name`,phone,photo,car_plate,`status`,euid,appointment_time,visit_time,create_time)
VALUES(1,1,1,1,CONCAT('L',i),CONCAT('1850040899',i),'http://7xtge5.com2.z0.glb.clouddn.com/logo.png',CONCAT('京A-8251',i),IF(i%2=0,0,1),12,CURDATE(),NULL,NOW());
SET i = i + 1;
END WHILE;
END//
DELIMITER ;
CALL pro(10);
-- 创建带输出参数的存储过程 DELIMITER // DROP PROCEDURE IF EXISTS countVisitor
CREATE
PROCEDURE countVisitor(OUT total INT) BEGIN SELECT MAX(euid) INTO total FROM visitor; END// DELIMITER ; -- 调用该存储过程,注意:输出参数必须是一个带@符号的变量 CALL countVisitor(@total);
SELECT @total;
-- 创建带输入和输出参数的存储过程 DELIMITER // DROP PROCEDURE IF EXISTS pro3// CREATE PROCEDURE pro3(IN input INT,OUT output char(2)) BEGIN IF input%2 = 0 THEN -- 用@符号加变量名的方式定义一个变量,与declare类似 SET @v = "偶数"; ELSE SET @v = "奇数"; END IF; -- 语句体内可以执行多条sql,但必须以分号分隔 SET output = @v;
END
// DELIMITER ; -- 调用该存储过程,注意:输入参数是一个值,而输出参数则必须是一个带@符号的变量 CALL pro3(1,@v); SELECT @v; -- 创建既做输入又做输出参数的存储过程 DELIMITER // DROP PROCEDURE IF EXISTS sp4 // CREATE PROCEDURE sp4(INOUT p4 INT) BEGIN IF p4 = 4 THEN SET p4 = 400; ELSE SET p4 = 500; END IF;
END//
DELIMITER ; CALL sp4(
@pp);
SELECT @pp;
-- 这里需要先设置一个已赋值的变量,然后再作为参数传入 SET @pp = 4; CALL sp4(@pp);
SELECT @pp;
-- 去掉unique key 约束 ALTER TABLE user_auth DROP INDEX `username`; -- IF(expr1,expr2,expr3) SELECT u.id,IF(u.status = 1,"启用","禁用") AS statusStr FROM estate_user_doormach AS u; -- limit offset SELECT aub.id FROM app_user_basic AS aub ORDER BY aub.id ASC LIMIT 3 OFFSET 0; -- 不知道什么鬼 SELECT DATE_ADD(CURDATE(),INTERVAL -DAY(CURDATE())+1 DAY);

 -- 级联插入表数据id

DELIMITER //
DROP PROCEDURE IF EXISTS insertNode//
CREATE PROCEDURE insertNode(IN input INT)
BEGIN
DECLARE i INT;
DECLARE id INT;
SET i = 0;
WHILE i < input DO
INSERT INTO a(va) VALUES(i);
SELECT LAST_INSERT_ID() INTO id;
INSERT INTO b(id,va) VALUES(id,i+10);
SET i = i + 1;
END WHILE;
END //
DELIMITER ;

CALL insertNode(2);
原文地址:https://www.cnblogs.com/ClassNotFoundException/p/6002896.html