WEB开发网
开发学院数据库MySQL MySQL5.0新特性教程 存储过程:第三讲 阅读

MySQL5.0新特性教程 存储过程:第三讲

 2007-04-22 10:55:57 来源:WEB开发网   
核心提示: 到第二个IF条件,判断结果为真,MySQL5.0新特性教程 存储过程:第三讲(4),于是中间语句被执行了6.CREATE PROCEDURE p12 (IN parameter1 INT)BEGINDECLARE variable1 INT;SET variable1 = paramete

到第二个IF条件,判断结果为真,于是中间语句被执行了

6.

CREATE PROCEDURE p12 (IN parameter1 INT)
BEGIN
DECLARE variable1 INT;
SET variable1 = parameter1 + 1;
IF variable1 = 0 THEN
INSERT INTO t VALUES (17);
END IF;
IF parameter1 = 0 THEN
UPDATE t SET s1 = s1 + 1; <--
ELSE
UPDATE t SET s1 = s1 + 2;
END IF;
END; //

因为参数parameter1值等于0,UPDATE语句被执行。如果parameter1值为NULL,则下一条UPDATE语句将被执行现在表t中有两行,他们都包含值5,所以如果我们调用p12,两行的值会变成6。

7.

mysql> CALL p12(0)//
Query OK, 2 rows affected (0.28 sec)
mysql> SELECT * FROM t//
+------+
| s1 |
+------+
| 6 |
| 6 |
+------+
2 rows in set (0.01 sec)

结果也是我们所期望的那样。

CASE 指令

1.

CREATE PROCEDURE p13 (IN parameter1 INT)
BEGIN
DECLARE variable1 INT;
SET variable1 = parameter1 + 1;
CASE variable1
WHEN 0 THEN INSERT INTO t VALUES (17);
WHEN 1 THEN INSERT INTO t VALUES (18);
ELSE INSERT INTO t VALUES (19);
END CASE;
END; //

如果需要进行更多条件真假的判断我们可以使用CASE语句。CASE语句使用和IF一样简单。

我们可以参考上面的例子: 2.

mysql> CALL p13(1)//
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM t//
+------+
| s1 |
+------+
| 6 |
| 6 |
| 19 |
+------+
3 rows in set (0.00 sec)

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:MySQL 特性 教程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接