美文网首页
Mysql 定义存储程序

Mysql 定义存储程序

作者: __笙歌4J | 来源:发表于2019-07-18 10:09 被阅读0次

每个存储的程序都包含一个由SQL语句组成的主体。该语句可以是由分号(;)字符分隔的多个语句组成的复合语句。例如,下面的存储过程有一个包含SET语句的BEGIN ... END块和包含另一个SET语句的REPEAT循环:

CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
  SET @x = 0;
  REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
END;

如果使用mysql客户机程序定义包含分号字符的存储程序,就会出现问题。默认情况下,mysql本身将分号识别为语句分隔符,因此必须临时重新定义分隔符,以便mysql将整个存储的程序定义传递给服务器。

若要重新定义mysql分隔符,请使用delimiter命令。下面的示例显示了如何对刚才显示的dorepeat()过程执行此操作。将分隔符更改为//,以使整个定义作为一条语句传递给服务器,然后还原为;在调用过程之前。这使得;在要传递给服务器的过程主体中使用的分隔符,而不是由mysql本身解释的分隔符。

mysql> delimiter //

mysql> CREATE PROCEDURE dorepeat(p1 INT)
    -> BEGIN
    ->   SET @x = 0;
    ->   REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
    -> END
    -> //
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> CALL dorepeat(1000);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @x;
+------+
| @x   |
+------+
| 1001 |
+------+
1 row in set (0.00 sec)

您可以将分隔符重新定义为//之外的字符串,并且分隔符可以由单个字符或多个字符组成。您应该避免使用反斜杠()字符,因为这是MySQL的转义字符。

下面是一个函数示例,该函数接受参数,使用SQL函数执行操作,并返回结果。在这种情况下,没有必要使用分隔符,因为函数定义不包含内部;语句分隔符:

mysql> CREATE FUNCTION hello (s CHAR(20))
mysql> RETURNS CHAR(50) DETERMINISTIC
    -> RETURN CONCAT('Hello, ',s,'!');
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT hello('world');
+----------------+
| hello('world') |
+----------------+
| Hello, world!  |
+----------------+
1 row in set (0.00 sec)

相关文章

  • Mysql 定义存储程序

    每个存储的程序都包含一个由SQL语句组成的主体。该语句可以是由分号(;)字符分隔的多个语句组成的复合语句。例如,下...

  • node学习03——数据库mysql

    一.Mysql 1.定义:存储数据的程序 可以 存和取 数据 2.安装mysql server数据库程序 www....

  • MySQL 视图和存储程序

    MySQL 视图和存储程序 存储程序:存储函数、存储过程、触发器和事件的总称。 存储例程:存储函数+存储过程。 触...

  • MYSQL高级特性之【存储过程与函数】

    一、定义 存储程序可以分为存储过程和函数。 1.1 存储过程的定义 存储过程(Stored Procedure)是...

  • Oracle存储过程与存储函数-入门

    一. 存储过程和存储函数的定义 定义:存储在数据库中,供所有用户程序调用的子程序叫做存储过程/存储函数。复杂点的解...

  • MySQL存储过程使用解析

    mysql存储过程 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一...

  • mysql的索引原理

    一、基础概念1、定义索引(Index)是帮助MySQL高效获取数据的数据结构 2、存储引擎mysql有不同的存储引...

  • (010)mysql中的变量

    定义变量 语法如下 MYSQL 变量定义只能在存储过程或函数里面定义,不像 Oracle / SQL Server...

  • MySQL/XtraBackup/ProxySQL/MHA

    索引查询 MySQL程序架构简图 MySQL程序的架构 图1 图2 图3 事务日志介绍 主从复制 日志存储 增量...

  • MySQL 高级特性(六):存储过程的优缺点分析

    MySQL 5.0 版本开始支持存储过程。存储过程(Stored Procedure)是数据库中存储的复杂程序,以...

网友评论

      本文标题:Mysql 定义存储程序

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