Mysql 存储过程
数据库存储过程就是在数据库内的一段代码,将常用的、比较复杂的SQL操作,提前写好并使用指定名称保存在数据库中,后续使用时直接调用。
存储过程是可编程的函数,在不同数据库中有一定差异。
以下均以Mysql为例:
1.创建、调用、删除存储过程
-- 创建存储过程 CREATE PROCEDURE 存储过程名称( IN|OUT 参数名 参数类型(参数长度)) BEGIN SQL及相关逻辑判断等语句; END; -- 调用存储过程 CALL 存储过程名称(参数名); -- 删除存储过程 DROP PROCEDURE 存储过程名称;
ps:存储过程可以有传入传出参数,也可以没有参数;存储过程中的参数名称不能和相关表字段名称一样,否则可能导致相关sql操作异常;
eg:
-- 以根据传入的id来修改指定行数据的存储过程为例 -- 创建表 CREATE TABLE `testTable` ( `id` int(11) NOT NULL, `name` varchar(255) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ); -- 插入两条测试数据 INSERT INTO testTable(id,name) VALUES (1,'name1'),(2,'name2'); -- 创建存储过程 CREATE PROCEDURE setName(IN nameid INT(11),newName VARCHAR(255)) BEGIN UPDATE testTable SET name=newName WHERE id=nameid; END; -- 调用存储过程 CALL setName(1,'新的名称');
2.存储过程中的循环语句
-- while循环语法 WHILE expression DO statements END WHILE
--repeat循环语法 REPEAT statements UNTIL expression END REPEAT
3.存储过程中的判断语句
-- if判断语法 IF expression THEN statements; ELSEIF expression THEN statements; ELSE statements; END IF; -- eg(满分100分,感觉输入的分数判断是否合格) CREATE PROCEDURE test ( IN mark INT ) BEGIN IF mark < 60 THEN SELECT '不合格' AS 成绩; ELSEIF mark >= 60 AND mark <= 100 THEN SELECT '合格' AS 成绩; ELSE SELECT 'mark值错误' AS err; END IF; END;