MySQL存储过程(重点)

范例1:

create procedure removeUserAndReturnUserNums(IN p_id INT UNSIGNED,OUT userNums INT UNSIGNED)
begin

     delete from users where id=p_id;
     select count(id) from users into userNums

end

IN:表示该参数的值必须在调用存储过程时指定

OUT:表示该参数的值可以被存储过程改变,并且可以返回

INOUT:表示该参数调用时指定,并且可以被改变和返回

范例2(重点):

create procedure test1(in a int, out b int)
begin
  declare b int default 0;
  if a < 5 then
    set b = 1;
end if;
  if b < 10 then 
    set b = 2;
  end if;
end

范例3:

CREATE PROCEDURE curdemo()
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE a CHAR(16);
  DECLARE b,c INT;
  DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
  DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

  OPEN cur1;
  OPEN cur2;

  read_loop: LOOP
    FETCH cur1 INTO a, b;
    FETCH cur2 INTO c;
    IF done THEN
      LEAVE read_loop;
    END IF;
    IF b < c THEN
      INSERT INTO test.t3 VALUES (a,b);
    ELSE
      INSERT INTO test.t3 VALUES (a,c);
    END IF;
  END LOOP;

  CLOSE cur1;
  CLOSE cur2;
END;

猜你喜欢

转载自blog.csdn.net/Richard_666/article/details/86168684