码迷,mamicode.com
首页 > 数据库 > 详细

mysql 存储过程项目小结

时间:2014-12-05 18:57:16      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   for   

1. false :0  true 1 切记

官方文档:http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

  •  BOOLBOOLEAN

    These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true:

    mysql> SELECT IF(0, true, false);
    +------------------------+
    | IF(0, true, false) |
    +------------------------+
    | false                  |
    +------------------------+
    
    mysql> SELECT IF(1, true, false);
    +------------------------+
    | IF(1, true, false) |
    +------------------------+
    | true                   |
    +------------------------+
    
    mysql> SELECT IF(2, true, false);
    +------------------------+
    | IF(2, true, false) |
    +------------------------+
    | true                   |
    +------------------------+

    However, the values TRUE and FALSE are merely aliases for 1 and 0, respectively, as shown here:

    mysql> SELECT IF(0 = FALSE, true, false);
    +--------------------------------+
    | IF(0 = FALSE, true, false) |
    +--------------------------------+
    | true                           |
    +--------------------------------+
    
    mysql> SELECT IF(1 = TRUE, true, false);
    +-------------------------------+
    | IF(1 = TRUE, true, false) |
    +-------------------------------+
    | true                          |
    +-------------------------------+
    
    mysql> SELECT IF(2 = TRUE, true, false);
    +-------------------------------+
    | IF(2 = TRUE, true, false) |
    +-------------------------------+
    | false                         |
    +-------------------------------+
    
    mysql> SELECT IF(2 = FALSE, true, false);
    +--------------------------------+
    | IF(2 = FALSE, true, false) |
    +--------------------------------+
    | false                          |
    +--------------------------------+

    The last two statements display the results shown because 2 is equal to neither 1 nor 0.

2 存储过程中执行动态sql

官方文档:

http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html

The first example shows how to create a prepared statement by using a string literal to supply the text of the statement:

mysql> PREPARE stmt1 FROM SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse;
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
|          5 |
+------------+
mysql> DEALLOCATE PREPARE stmt1;

The second example is similar, but supplies the text of the statement as a user variable:

mysql> SET @s = SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse;
mysql> PREPARE stmt2 FROM @s;
mysql> SET @a = 6;
mysql> SET @b = 8;
mysql> EXECUTE stmt2 USING @a, @b;
+------------+
| hypotenuse |
+------------+
|         10 |
+------------+
mysql> DEALLOCATE PREPARE stmt2;

Here is an additional example which demonstrates how to choose the table on which to perform a query at runtime, by storing the name of the table as a user variable:

mysql> USE test;
mysql> CREATE TABLE t1 (a INT NOT NULL);
mysql> INSERT INTO t1 VALUES (4), (8), (11), (32), (80);

mysql> SET @table = t1;
mysql> SET @s = CONCAT(SELECT * FROM , @table);

mysql> PREPARE stmt3 FROM @s;
mysql> EXECUTE stmt3;
+----+
| a  |
+----+
|  4 |
|  8 |
| 11 |
| 32 |
| 80 |
+----+

mysql> DEALLOCATE PREPARE stmt3;

 

总结:

执行动态sql,分三步走:

1. PREPARE;

 Syntax:

PREPARE stmt_name FROM preparable_stmt

2. EXECUTE;

   Syntax:

  EXECUTE stmt_name [USING @var_name [, @var_name] ...]

3. DEALLOCATE PREPARE;

  Syntax:

{DEALLOCATE | DROP} PREPARE stmt_name

 3. 存储过程中的事务

 语法:

START TRANSACTION [WITH CONSISTENT SNAPSHOT]
BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET autocommit = {0 | 1}

 

mysql 存储过程项目小结

标签:style   blog   http   io   ar   color   os   sp   for   

原文地址:http://www.cnblogs.com/davidwang456/p/4147132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!