存储过程学习
1. 简单的存储过程
DROP PROCEDURE IF EXISTS hi;
CREATE PROCEDURE hi() SELECT 'hello';
CALL hi();
- 输入 两个数字 输出结果
DROP PROCEDURE IF EXISTS sel;
DELIMITER //
CREATE PROCEDURE sel(a INT,b INT)
BEGIN
DECLARE c INT DEFAULT 0;
IF a IS NULL THEN
SET a=9;
END IF;
IF b IS NULL THEN
SET b=1;
END IF;
SET c = a +b;
SELECT c AS num;
END
//
DELIMITER //;
CALL sel(NULL,20)
输出结果 29
3.查询一个表中的值 insert到另外一张表中
DROP PROCEDURE IF EXISTS selAdd;
DELIMITER //
CREATE PROCEDURE selAdd()
BEGIN
## 声明变量 name 和 age
DECLARE stuName VARCHAR(100);
DECLARE age INT DEFAULT 0;
## 定义游标
DECLARE cur1 CURSOR FOR SELECT NAME,age FROM student WHERE NAME<10;
##打开游标
OPEN cur1;
##循环
REPEAT
FETCH cur1 INTO stuName,age;
INSERT INTO test (NAME,age) VALUES(stuName,age);
UNTIL age>10 END REPEAT;
##关闭游标
CLOSE cur1;
END//
DELIMITER //;
CALL selAdd();
student表
test 表
执行 CALL selAdd(); 后的test表