美文网首页
存储过程(转)

存储过程(转)

作者: 屎倒淋头还嚼便 | 来源:发表于2019-05-18 12:00 被阅读0次

出自:https://www.cnblogs.com/mark-chan/p/5384139.html

// 具体例子

DELIMITER //
DROP PROCEDURE IF EXISTS demo;
CREATE PROCEDURE demo()
    BEGIN
    DECLARE n int DEFAULT 0;
        WHILE(n<20000) DO
            INSERT INTO t_user(name) VALUES(substring(MD5(RAND()),floor(RAND()*26)+1,6));
        set n = n + 1;
        END WHILE ;
   END //
DELIMITER ;
call demo();

DELIMITER;
DROP PROCEDURE IF EXISTS demo;
CREATE PROCEDURE demo()
    BEGIN
    DECLARE n int DEFAULT 0;
        WHILE(n<3) DO
            INSERT INTO liuyan(liuyan) VALUES(substring(MD5(RAND()),floor(RAND()*26)+1,6));
        set n = n + 1;
        END WHILE ;
   END;
DELIMITER ;
call demo();

上面是在查询中执行的语句,语句中新建了一个存储过程demo,并且说如果demo已经存在就删除调(如果已有demo,会删除,并重新创建。如果没有demo,就新建一个存储过程demo)
下面是新建函数,是一个存储过程,可以保存为demo,存储过程的名称为demo,存储过程demo可以在ssm框架中调用。

BEGIN
    DECLARE n int DEFAULT 0;
        WHILE(n<200) DO
            INSERT INTO user(userId,userName) VALUES(500 + RAND() * (1000 - 500),substring(MD5(RAND()),floor(RAND()*26)+1,6));
        set n = n + 1;
        END WHILE ;
  END

ssm调用存储过程时,存储过程支持事务。

事务回滚

分隔符

MySQL默认以";"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原。

参数

存储过程根据需要可能会有输入、输出、输入输出参数,如果有多个参数用","分割开。MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT:

IN参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值

OUT:该值可在存储过程内部被改变,并可返回

INOUT:调用时指定,并且可被改变和返回

DELIMITER //
  CREATE PROCEDURE out_param(OUT p_out int)
    BEGIN
      SELECT p_out;
      SET p_out=2;
      SELECT p_out;
    END;
    //
DELIMITER ;
#调用
SET @p_out=1;
CALL out_param(@p_out);
SELECT @p_out;

IN a int // 调用时,a可以赋值,但不能返回
OUT a int // 调用时,a无法赋值,但可以返回
INOUT a int // 调用时,a可以赋值,也可以返回

一、if - then - else语句

二、while循环语句

相关文章

  • 存储过程(转)

    出自:https://www.cnblogs.com/mark-chan/p/5384139.html // 具体...

  • 存储过程讲解(转)

    什么是存储过程: 存储过程的好处: 小结:总之存储过程是好东西,在做项目时属于必备利器,下面介绍存储过程的基本语法...

  • 常见面试题整理--数据库篇

    转自 (一)什么是存储过程?有哪些优缺点? 存储过程是一些预编译的SQL语句。 更加直白的理解:存储过程可以说是一...

  • Mysql存储过程

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 创建存储过程 调用存储过程 存储过程...

  • MySQL批量添加数据

    创建存储过程 执行存储过程 删除存储过程

  • 17 存储过程

    过程: 函数: 过程是没有返回值的函数 存储过程: 存储过程语法 存储过程1--创建简单的存储过程 存储过程2--...

  • 存储过程

    详见存储过程详解 创建存储过程 使用存储过程 存储过程简介 什么是存储过程:存储过程可以说是一个记录集吧,它是由一...

  • 存储过程与函数

    存储过程与函数存储过程的定义存储过程的创建存储过程的操作自定义函数 存储过程与函数 存储过程的定义 运行效率高 降...

  • 存储过程

    ps 不能修改过程体,要修改过程体必须先删除存储过程,再重建 mysql变量的术语分类: 1.用户变量:以"@"开...

  • 存储过程

    存储过程 过程,可以简单理解为是一个函数。 函数和过程的区别:函数总是向调用者返回数据,而过程没有数据返回。 Or...

网友评论

      本文标题:存储过程(转)

      本文链接:https://www.haomeiwen.com/subject/imzzaqtx.html