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

    1.创建存储过程语法

    CREATE PROCEDURE 存储过程名 [(参数)]
    begin
        --语句块
    end;

    2.创建无参存储过程

    CREATE PROCEDURE db_pro()
    begin
        SELECT * from person;
    end;

    --执行存储过程:
    CALL db_pro();

    3.创建输入参数存储过程:

    CREATE PROCEDURE db_pro(IN p INT)
    begin
        SELECT * from person WHERE id = p;
    end;
    SET @p=1;
    --执行存储过程 CALL db_pro(
    @p);

    4.创建输出参数的存储过程

    CREATE PROCEDURE db_pro(OUT out_p INT)
    begin
        SELECT COUNT(*) INTO out_p from person;
        SELECT out_p; --如果不写在执行该存储过程讲无法显示输出结果
    end;
    CALL db_pro(@out_p);
    --SELECT @out_p;  --也可以

    5.创建inout输入参数的存储过程

    CREATE PROCEDURE db_pro(INOUT inout_p INT)
    begin
        SELECT COUNT(*) INTO inout_p from person WHERE id = inout_p;
        SELECT inout_p; --若不写将无法显示输出结果
    end;
    SET @p=1;
    CALL db_pro(
    @p);

    6.删除存储过程

    DROP PROCEDURE if exists 存储过程名;

    7.修改存储过程

    ALTER PROCEDURE 存储过程名

    8.条件语句

    CREATE PROCEDURE proc2(IN parameter int) 
    begin
    declare var int; 
    set var=parameter+1; 
    if var=0 then
    insert into t values(17); 
    end if; 
    if parameter=0 then
    update t set s1=s1+1; 
    else
    update t set s1=s1+2; 
    end if; 
    end;
    ------------------------------------------
    DELIMITER // 
    CREATE PROCEDURE proc3 (in parameter int) 
    begin
    declare var int; 
    set var=parameter+1; 
    case var 
    when 0 then  
    insert into t values(17); 
    when 1 then  
    insert into t values(18); 
    else  
    insert into t values(19); 
    end case; 
    end; 
    //
    DELIMITER ;

    9.循环语句

    DELIMITER // 
    CREATE PROCEDURE proc4() 
    begin
    declare var int; 
    set var=0; 
    while var<6 do 
    insert into t values(var); 
    set var=var+1; 
    end while; 
    end; 
    // 
    DELIMITER ;
    -- 它在执行操作后检查结果,而while则是执行前进行检查。
    
    DELIMITER // 
    CREATE PROCEDURE proc5 () 
    begin  
    declare v int; 
    set v=0; 
    repeat 
    insert into t values(v); 
    set v=v+1; 
    until v>=5 
    end repeat; 
    end; 
    // 
    DELIMITER ; 
    
    
    -- loop循环不需要初始条件,这点和while 循环相似,同时和repeat循环一样不需要结束条件, leave语句的意义是离开循环。
    DELIMITER // 
    CREATE PROCEDURE proc6 () 
    begin
    declare v int; 
    set v=0; 
    LOOP_LABLE:loop 
    insert into t values(v); 
    set v=v+1; 
    if v >=5 then
    leave LOOP_LABLE; 
    end if; 
    end loop; 
    end; 
    // 
    DELIMITER ; 
     
     
  • 相关阅读:
    最短路变形题目 HDU多校7
    交换一个数字的任意两个位置,指定K次的最值
    七彩线段
    带限制的广搜 codeforces
    在一个矩阵内求一个最长上升子序列
    函数,以及三元运算符
    文件操作
    基础数据类型补充以及python编码
    深浅copy,is和==区别,集合,列表的操作
    字典和枚举
  • 原文地址:https://www.cnblogs.com/Difcipo/p/14008638.html
Copyright © 2011-2022 走看看