存储过程题目

system_users 表

id
username
password
  • 创建存储过程实现传入用户名和密码,插入到users表中

users 表

id
name
phone
birthday 
  • 创建存储过程实现传入女神的编号,返回女神的名称和女神的电话

  • 创建存储过程实现传入两个女神的生日,返回大小,两个生日之间相差的天数

答案



-- 1.创建存储过程实现传入用户名和密码,插入到users表中

DELIMITER $$
CREATE PROCEDURE create_user(IN p_username VARCHAR(100), IN p_password VARCHAR(100))
BEGIN
	INSERT INTO system_users(`username`, `password`) VALUES(p_username,p_password); 
END $$
DELIMITER ;

CALL create_user("root", "123456789");



-- 2.创建存储过程实现传入女神的编号,返回女神的名称和女神的电话

DELIMITER $$
CREATE PROCEDURE get_god(IN p_id INT, OUT p_name VARCHAR(255), OUT p_phone VARCHAR(255))
BEGIN
	SELECT `name`, `phone` INTO p_name, p_phone FROM users WHERE id=p_id;
END $$ 
DELIMITER ;


CALL get_god(1, @a, @b);
SELECT @a, @b;


-- 3.创建存储过程实现传入两个女神的生日,返回大小,两个生日之间相差的天数
-- 如何计算两个日期相差几天

-- SELECT TIMESTAMPDIFF(DAY,'2021-05-20 00:00:00',DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S'))

-- SELECT TIMESTAMPDIFF(DAY,'2021-05-20 00:00:00','2021-05-19 00:00:00')

DELIMITER $$
CREATE PROCEDURE get_days(IN p_dt1 VARCHAR(100), IN p_dt2 VARCHAR(100), OUT dd INT)
BEGIN
	SELECT TIMESTAMPDIFF(DAY,p_dt1, p_dt2) INTO dd;
END $$ 
DELIMITER ;

CALL get_days('2021-05-10 00:00:00','2021-05-19 00:00:00', @days);

SELECT @days;