2,存储过程语法

SELECT * FROM user_relations WHERE lft >=10 and rgt<351 and is_vip=1 and is_cloud=1;

#存储过程语法
DELIMITER //
CREATE PROCEDURE 存储过程名(参数名1 参数类型1,参数名2,参数类型2)
BEGIN
            代码块;
END//
DELIMITER ;

#存储过程是一组sql语句的集合
#书写一个加薪的存储过程
DELIMITER //
CREATE PROCEDURE addSalary(money FLOAT,idd BIGINT)
BEGIN
            UPDATE emp SET salary=salary+money WHERE id=idd;
END //
DELIMITER ;

#调用存储过程call存储过程名()
CALL addSalary (1000,9);    

#删除存储过程;DROP PROCEDURE 存储过程名;
DROP PROCEDURE addSalary;
#存储过程练习
DELIMITER //
CREATE PROCEDURE test(in i FLOAT,in j FLOAT.out num FLOAT)
BEGIN
             set num=i+j;
END //
DELIMITER ;
CALL test (10,20@result)

SELECT@result
#-------------------------------------------------------------------
#带if语句的存储过程

DELIMITER //
CREATE PROCEDURE addSalary(money FLOAT,idd BIGINT)
BEGIN
            IF (m>0) THEN  
                                UPDATE emp SET salary=salary+money WHERE id=idd;
            END IF;
END //
DELIMITER ;


#带if...else的存储过程
DELIMITER //
CREATE PROCEDURE addSalary(money FLOAT,idd BIGINT)
BEGIN
            IF (m>0) THEN  
                                UPDATE emp SET salary=salary+money WHERE id=idd;
            ELSE
                           SELECT 'dsfshj ' as 提示信息;
            END IF;
END //
DELIMITER ;

CALL addSalary (1,1000);

#带if...else if ...else语句的存储过程
DELIMITER //
CREATE PROCEDURE addSalary(money FLOAT)
BEGIN
            IF (money>500) THEN  
                                SELECT '宝马' as 信息;
            ELSEIF money>300 THEN
                                SELECT '长成' as 信息;
            ELSEIF money>30 THEN
                                SELECT '长按' as 信息;
            ELSE
                                SELECT '没有' as 信息;
            END IF;
END //
DELIMITER ;

CALL addSalary (1000);



#case选择分支结构
DELIMITER //
CREATE PROCEDURE addSalary(money FLOAT,idd BIGINT)
BEGIN
            CASE i
    WHEN 1 THEN
        select 'xq1'as'日期';
    WHEN 2 THEN
        select 'xq1'as'日期';
    ELSE
        select 'xq3'as'日期';
END CASE;

END //
DELIMITER ;


--------while---------------------------
DELIMITER //
CREATE PROCEDURE por_whilel(IN i INT)
BEGIN
            DECLARE a INT DEFAULT(1);#声明变量赋值变量
            WHILE a<=100 DO
                        INSERT INTO users set usersname='test'.money=500;
                        set a=a+1;#结束循环
            END WHILE;

END //
DELIMITER ;


-----------------LOOP------------------
DELIMITER //
CREATE PROCEDURE por_loop()
BEGIN
            DECLARE i INT DEFAULT 0;
            loop_tets1:LOOP
                       INSERT INTO users set usersname='test'.money=500;
                 set i = i+1
                   IF i=100 THEN
                              LEAVE loop_tets1; 
                   END IF; 
      END LOOP;            
END //
DELIMITER ;

 

posted @ 2021-07-09 15:48  汉魂县令  阅读(43)  评论(0)    收藏  举报