• 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);
  • 相关阅读:
    #船停在码头是最安全的,但那不是造船的目的
    #尘封的记忆
    我们只是普通朋友
    曾经的曾经的多么多么的爱一个人。。。
    混凝土自动点击——按键精灵
    WinForms 实现气泡提示窗口(转载)
    C语言温度
    教你成为全栈工程师(Full Stack Developer) 一-各显神通总结八大类编程语言的区别
    教你成为全栈工程师(Full Stack Developer) 〇-什么是全栈工程师
    C#隐藏tabcontrol
  • 原文地址:https://www.cnblogs.com/ClassNotFoundException/p/6002896.html
Copyright © 2020-2023  润新知