MySQL 5.0 新特性教程 存储过程:第三讲
2007-11-11 15:26:43 来源:WEB开发网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(和PHP搭配之最佳组合)> CALL p13(1)//
Query OK, 1 row affected (0.00 sec)
MySQL(和PHP搭配之最佳组合)> SELECT * FROM t//
+------+
| s1 |
+------+
| 6 |
| 6 |
| 19 |
+------+
3 rows in set (0.00 sec)
执行过程后,传入值1,如上面例子,值19被插入到表t中。
Question
问题
问题: CALL p13(NULL) //的作用是什么?
另一个:这个CALL语句做了那些动作?
你可以通过执行后观察SELECT做了什么,也可以根据代码判断,在5秒内做出。
Answer
答案
MySQL(和PHP搭配之最佳组合)> CALL p13(NULL)//
Query OK, 1 row affected (0.00 sec)
MySQL(和PHP搭配之最佳组合)> SELECT * FROM t//
+------+
| s1 |
+------+
| 6 |
| 6 |
| 19 |
| 19 |
+------+
4 rows in set (0.00 sec)
答案是当你调用p13时,MySQL(和PHP搭配之最佳组合)插入了另一条包含数值19的记录。原因是变量variable1的值为NULL,CASE语句的ELSE部分就被执行了。希望这对大家有意义。如果你回答不出来,没有问题,我们可以继续向下走。
更多精彩
赞助商链接