zoukankan      html  css  js  c++  java
  • MySQL 存储过程

    drop procedure if exists batch_insert_user;
    delimiter //
    create procedure batch_insert_user()
    begin
        declare i int default 0;
        start transaction;
        set i = 1;
        while i < 1000 do
            insert into users(username, password) values(concat("krkj", i), concat("krkjp", i));
            set i = i + 1;
        end while;
    end;
    //
    
    call batch_insert_user();
    select * from users;
    select @val:=concat("dog", 10);
    drop procedure if exists batch_insert_user;
    delimiter //
    create procedure batch_insert_user()
    begin
        declare i int default 0;
        start transaction;
        repeat
            insert into users(username, password) values(concat("repeat", i), concat("repeata", i));
            set i = i + 1;
            until i >1000
        end repeat;
    end;
    //
    
    call batch_insert_user();
    SET SQL_SAFE_UPDATES = 0; 
    delete from users;
    select * from users;
    drop procedure if exists batch_insert_user;
    delimiter //
    create procedure batch_insert_user()
    begin
        declare i int default 0;
        start transaction;
        loop_label:loop
            insert into users(username, password) values(concat("loop", i), concat("loopp", i));
            set i = i + 1;
            if i >= 1000 then
                leave loop_label;
            end if;
        end loop;
    end;
    //
    存储过程P_GET_CLASS_NAME是根据输入的班级号判断班级名称
    
    存储过程P_INSERT_STUDENT是接收输入的学生信息,最终将信息插入学生表。
    
        DROP PROCEDURE IF EXISTS `P_GET_CLASS_NAME`;  
        CREATE PROCEDURE P_GET_CLASS_NAME(IN ID int,OUT NAME VARCHAR(50))  
        BEGIN  
            IF(ID = 1) THEN   
                  SET NAME = '一班';  
            END IF;  
            IF(ID = 2) THEN   
                  SET NAME = '二班';  
            END IF;  
        END;  
          
          
        DROP PROCEDURE IF EXISTS `P_INSERT_STUDENT`;  
        CREATE PROCEDURE P_INSERT_STUDENT(IN ID INT,IN NAME VARCHAR(10),IN CLASSNO INT,IN BIRTH DATETIME)  
        BEGIN  
             SET @ID = ID;  
             SET @NAME = NAME;  
             SET @CLASSNO = CLASSNO;  
             SET @BIRTH = BIRTH;  
             SET @CLASSNAME = NULL;  
             CALL P_GET_CLASS_NAME(@CLASSNO,@CLASSNAME);  
               
             SET @insertSql = CONCAT('INSERT INTO TBL_STUDENT VALUES(?,?,?,?)');  
             PREPARE stmtinsert FROM @insertSql;  
             EXECUTE stmtinsert USING @ID,@NAME,@CLASSNAME,@BIRTH;  
             DEALLOCATE PREPARE stmtinsert;  
        END;  
          
        CALL P_INSERT_STUDENT(1,'xy',1,'2012-10-01 10:20:01');  
    
    在第二个存储过程中
    
    ①利用SET声明了参数,调用了第一个存储过程
    
    ②在第一个存储过程中的NAME参数是输出参数,所以@CLASSNAME这个参数在调用完第一个过程后就被附值
    
    ③最终利用CONCAT拼接SQL语句并传入参数执行SQL语句
    
    CALL P_INSERT_STUDENT(1,'xy',1,'2012-10-01 10:20:01');调用存储过程
  • 相关阅读:
    LaTeX插入数学公式
    清除浮动的4种方式
    水平居中与垂直居中
    如何实现两三栏布局
    BFC
    flex弹性盒子
    盒模型
    Git
    jQuery设置disabled属性与移除disabled属性
    TP---where多条件查询
  • 原文地址:https://www.cnblogs.com/yingsi/p/4431938.html
Copyright © 2011-2022 走看看