MySQL存储过程

 

      在性能测试时,为模拟实际生产环境的数据量,又或者在业务中,为方便测试,需要预置一批数据使用。所以需要一些大批量造数据的手段,造数据的方法多种多样,本文是介绍的直接通过navicat终端,写存储过程语句批量造数据,这样的方法,最简单有效。直接上一条,上手就能用的白板SQL;

DELIMITER $$ #定义一个分界符
DROP PROCEDURE IF EXISTS testInsert; #为了使SQL重复执行,所以写了这一句,如果存在即删除,
CREATE PROCEDURE testInsert() #创建一个存储过程testInsert

BEGIN #事务的开始

DECLARE i INT; #定义变量的数据类型为int


set i = 0; #定义 变量i的初始值为0


WHILE i < 3 DO #此处采用的While循环,当上一步设置的i<3时,开始执行下方循环体,即:i=0,循环到i<3,一共会插入3条数据。所以需要通过这一步来控制具体需要循环的次数

INSERT INTO `库名`.`表名`(列名) VALUES (值);#这儿写SQL

SET i = i + 1;  # i自增1


END WHILE; #结束循环
END; #结束事务
$$
DELIMITER; #此处为定义的分界符的结束符

-----------------------
call testInsert(); #先执行上方的存储过程,再执行这一句,调用存储过程的SQL;

 

了解存储过程:

1、什么是存储过程?

一个存储过程是一个可编程的函数,经编译后存储在数据库中,用户经过指定存储过程的名字并给定参数(若是该存储过程带有参数)来调用执行它。
存储过程通常有如下优点:

1) 封装性

存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的 SQL 语句,并且数据库专业人员可以随时对存储过程进行修改,而不会影响到调用它的应用程序源代码。

2) 可增强 SQL 语句的功能和灵活性

存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

3) 可减少网络流量

由于存储过程是在服务器端运行的,且执行速度快,因此当客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而可降低网络负载。

4) 高性能

存储过程执行一次后,产生的二进制代码就驻留在缓冲区,在以后的调用中,只需要从缓冲区中执行二进制代码即可,从而提高了系统的效率和性能。

5) 提高数据库的安全性和数据的完整性

使用存储过程可以完成所有数据库操作,并且可以通过编程的方式控制数据库信息访问的权限。

 

2、创建的存储过程,在哪里查看和编辑?

 

3、进阶用法

DELIMITER $$
DROP PROCEDURE IF EXISTS car;
CREATE PROCEDURE car(IN orderno VARCHAR(200)) #(按格式定义参数,in输入参数,out输出参数)

BEGIN
DECLARE maid BIGINT;
DECLARE orgid BIGINT;
DECLARE orderid BIGINT;
DECLARE result INT;

set maid = (SELECT 表1列 FROM  表2 WHERE 表1列 = (SELECT 表2列 FROM  表2 WHERE ORDER_NO = orderno));
set orgid = (SELECT 表2列1 FROM 表2 WHERE `ORDER_NO` = orderno);
set orderid = (SELECT    表2列2 FROM     表2 WHERE `ORDER_NO` = orderno);
set result = (SELECT count(1) FROM 表4  WHERE order_no = orderno);  #变量的值可以是SQL语句的值

IF result >= 1 THEN
    update表5 set=where= orderno;
ELSE
    INSERT INTO 表5 (`列1`, `列2`,) VALUES (orderid, orderno);
END IF;
# IF else 的用法
    INSERT INTO 表6 ( `列1`,  `列2`) VALUES (maid, orgid, );
    
END;
$$
DELIMITER;

call car('30030023083018877792'); #输入参数的用法

 

 

 
 
存储过程的参数:输出,输入参数,IN/OUT
 
0
 
 
加insert语句
0
 
 
输入输出,参数
0
 
存储过程定义,以及优缺点
0
 

 

 

 

 
分支语句:IF-THEN-ELSE

 

 
 

 

 
WHILE循环

 

 
repeat循环
0
 
 
loop循环
0
 
 
查询存储过程
0
 
0
 
 
posted @ 2024-04-23 16:55  xiaodi888  阅读(38)  评论(0编辑  收藏  举报