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;

 

posted @ 2023-04-27 10:55  诟笑  阅读(206)  评论(0编辑  收藏  举报