技术开发 频道

MySQL数据库新特性之存储过程入门教程

  6) 如何定义变量

  下面讲解下MYSQL 5存储过程中,如何定义变量。必须显式地在存储过程的一开始声明变量,并指出它们的数据类型,一但声明了变量后,就可以在存储过程中使用,定义变量的语法如下:

  DECLARE varname DATA-TYPE DEFAULT defaultvalue

  举例说明:

  DECLARE a, b INT DEFAULT 5;
  
DECLARE str VARCHAR(50);
  
DECLARE today TIMESTAMP DEFAULT CURRENT_DATE;
  
DECLARE v1, v2, v3 TINYINT;

  一旦定义好变量,就可以在存储过程中对其进行赋初值,并进行各类相关的操作,比如:

  DELIMITER //
  
CREATE PROCEDURE `var_proc` (IN paramstr VARCHAR(20))
  
BEGIN
  
DECLARE a, b INT DEFAULT 5;
  
DECLARE str VARCHAR(50);
  
DECLARE today TIMESTAMP DEFAULT CURRENT_DATE;
  
DECLARE v1, v2, v3 TINYINT;
  
INSERT INTO table1 VALUES (a);
  
SET str = 'I am a string';
  
SELECT CONCAT(str,paramstr), today FROM table2 WHERE b>=5;
  
END //

  7)MYSQL存储过程的语法结构

  MYSQL存储过程中支持IF,CASE,ITERATE,LEAVE LOOP,WHILE和REPEAT等语法结构和语句,在本文中,着重介绍IF,CASE和WHILE语法,因为它们使用的最为广泛。

  IF 语句

  if语句使用的是if…then end if的语法结构,例子如下:

  DELIMITER //
  
CREATE PROCEDURE `proc_IF` (IN param1 INT)
  
BEGIN
  
DECLARE variable1 INT;
  
SET variable1 = param1 + 1;
  
IF variable1 = 0 THEN
  
SELECT variable1;
  
END IF;
  
IF param1 = 0 THEN
  
SELECT 'Parameter value = 0';
  
ELSE
  
SELECT 'Parameter value <= 0';
  
END IF;
  
END //

  CASE语句

  当有很多IF语句时,就应该考虑使用CASE语句了,它是多分支选择语句,有两种写法:

  第一种写法:

  DELIMITER //
  
CREATE PROCEDURE `proc_CASE` (IN param1 INT)
  
BEGIN
  
DECLARE variable1 INT;
  
SET variable1 = param1 + 1;
  
CASE variable1
  
WHEN 0 THEN
  
INSERT INTO table1 VALUES (param1);
  
WHEN 1 THEN
  
INSERT INTO table1 VALUES (variable1);
  
ELSE
  
INSERT INTO table1 VALUES (99);
  
END CASE;
  
END //
1
相关文章