mysql 存储过程

 


存储过程实例

前提准备

  1. 创建表
create table table1(name varchar(10));
create table Matches(
id int(10) auto_increment not null,
MATCHNO int(5) not null,
TEAMNO Varchar(6) not null,
PLAYERNO int(7) not null ,
WON Int(8) not null,
LOST varchar(2),
primary key(id));
create table Players(
 id int(10)  Auto_Increment Not null Primary Key,
 name varchar(20)  Not null,
 age varchar(4) not null,
 gender varchar(4));
  1. 向3张表创建数据
insert into table1 values(78);insert into table1 values('ls');

insert into players  values(1,'lsq',22,'男');insert into Players  values(2,'lqq',23,'女');

insert into Matches values(1,5,6,3,8,9); insert into Matches values(2,2,3,4,3,8);

实例

创建存储过程

Delimiter //
CREATE PROCEDURE first_proc()
BEGIN
drop table table1;
drop table Players;
drop table Matches;
create table table1(name varchar(10));
create table Players(
id int(10)  Auto_Increment Not null Primary Key,
name varchar(20)  Not null,
age varchar(4) not null,
gender varchar(4));
create table Matches(
id int(10) Auto_Increment Not null,
MATCHNO int(5)  Not null,
TEAMNO Varchar(6)  not Null,
PLAYERNO int(7) Not null ,
WON Int(8) not null,
LOST varchar(2),
Primary Key(id));
insert into table1  values(78);insert into table1 values('ls');
insert into Players values(1,'lsq',22,'男');insert into Players values(2,'lqq',23,'女');
insert into Matches values(1 ,5,6,3,8,9); insert into Matches values(2,2,3,4,3,8);
select * from table1;
select * from Players;
select * from Matches;
end;
//
Delimiter ;

执行

call first_proc;

删除存储过程

drop procedure first_proc

语法说明

基本语法

存储过程结构体:

存储过程体包含了在过程调用时必须执行的语句,例如:dml、ddl语句,if-then-else和while-do语句、声明变量的declare语句等
过程体格式:以begin开始,以end结束(可嵌套)
BEGIN
  BEGIN
    BEGIN
      statements;
    END
  END
END

#存储过程变量的声明和使用
DROP PROCEDURE IF EXISTS test;    -- 如果存在指定存储过程则删除它
DELIMITER //           -- 定义存储过程结束符 这里的结束符为//,
CREATE PROCEDURE test() --
BEGIN -- 过程体 开始
    DECLARE aa VARCHAR(20);    -- 定义变量 
    DECLARE bb INT DEFAULT 0;    -- 定义int 类型变量 默认为0SET aa = '张三';   -- 变量赋值
    SELECT aa;        -- 输出变量
    SELECT bb;     -- 存储过程结束出变量
END// 过程体 结束        
CALL test();            -- 调用存储过程

while 循环

循环插入10条数据

drop  PROCEDURE if EXISTS  second_proc -- 如果存在就删除
Delimiter //
CREATE PROCEDURE second_proc(in total int)
begin
    declare beginNumber INT default 0;
     while beginNumber<=total DO -- 循环开始
         insert into table1 values(CONCAT('ls',beginNumber));
        set beginNumber = beginNumber+1;
    end while; -- 循环结束
end;
//
Delimiter ;

call second_proc(10); -- 调用

循环控制(if-else)

#存储过程流程控制语句使用
DROP PROCEDURE IF EXISTS test_2;
DELIMITER //
CREATE PROCEDURE test_2()
BEGIN 
    DECLARE aa INT;        # 定义变量
    DECLARE bb INT;        # 定义变量
    SET aa = 20;        # 变量赋值
    SET bb = 20;        # 变量赋值
    IF aa > bb THEN        # 判断
        SELECT aa;
    ELSEIF aa < bb THEN    # else if 可以有多个
        SELECT bb;
    ELSE             # else 只能存在一个
        SELECT aa+bb;
    END IF;            # 结束if 语句
END//
CALL test_2();            # 调用存储过程

参考地址:

MySQL之存储过程实例讲解(创建、调用、查看、修改、删除) - 四夕竹歌 - 博客园>

Mysql 存储过程声明及使用 - 不休不止 - 博客园

posted @   啄木鸟伍迪  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
//火箭 GenerateContentList();

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示