设为首页 加入收藏

TOP

MySQL存储过程详解(二)
2014-11-24 08:19:31 来源: 作者: 【 】 浏览:16
Tags:MySQL 存储 过程 详解
5.mysql> SELECT @p_out;

16.+-------+

17.| p_out |

18.+-------+

19.| 2 |

20.+-------+

Ⅲ. INOUT参数例子

创建:

1. mysql > DELIMITER //

2. mysql > CREATE PROCEDURE demo_inout_parameter(INOUT p_inout int)

3. -> BEGIN

4. -> SELECT p_inout;

5. -> SET p_inout=2;

6. -> SELECT p_inout;

7. -> END;

8. -> //

9. mysql > DELIMITER ;

执行结果:

1. mysql > SET @p_inout=1;

2. mysql > CALL demo_inout_parameter(@p_inout) ;

3. +---------+

4. | p_inout |

5. +---------+

6. | 1 |

7. +---------+

8.

9. +---------+

10.| p_inout |

11.+---------+

12.| 2 |

13.+---------+

14.

15.mysql > SELECT @p_inout;

16.+----------+

17.| @p_inout |

18.+----------+

19.| 2 |

20.+----------+

(4). 变量

Ⅰ. 变量定义

DECLARE variable_name [,variable_name...] datatype [DEFAULT value];

其中,datatype为MySQL的数据类型,如:int,float, date, varchar(length)

例如:

1. DECLARE l_int int unsigned default 4000000;

2. DECLARE l_numeric number(8,2) DEFAULT 9.95;

3. DECLARE l_date date DEFAULT '1999-12-31';

4. DECLARE l_datetime datetime DEFAULT '1999-12-31 23:59:59';

5. DECLARE l_varchar varchar(255) DEFAULT 'This will not be padded';

Ⅱ. 变量赋值

SET 变量名= 表达式值[,variable_name = expression ...]

Ⅲ. 用户变量

. 在MySQL客户端使用用户变量

1. mysql > SELECT 'Hello World' into @x;

2. mysql > SELECT @x;

3. +-------------+

4. | @x |

5. +-------------+

6. | Hello World |

7. +-------------+

8. mysql > SET @y='Goodbye Cruel World';

9. mysql > SELECT @y;

10.+---------------------+

11.| @y |

12.+---------------------+

13.| Goodbye Cruel World |

14.+---------------------+

15.

16.mysql > SET @z=1+2+3;

17.mysql > SELECT @z;

18.+------+

19.| @z |

20.+------+

21.| 6 |

22.+------+

. 在存储过程中使用用户变量

1. mysql > CREATE PROCEDURE GreetWorld( ) SELECT CONCAT(@greeting,' World');

2. mysql > SET @greeting='Hello';

3. mysql > CALL GreetWorld( );

4. +----------------------------+

5. | CONCAT(@greeting,' World') |

6. +----------------------------+

7. | Hello World |

8. +----------------------------+

. 在存储过程间传递全局范围的用户变量

1. mysql> CREATE PROCEDURE p1() SET @last_procedure='p1';

2. mysql> CREATE PROCEDURE p2() SELECT CONCAT('Last procedure was ',@last_procedure);

3. mysql> CALL p1( );

4. mysql> CALL p2( );

5. +-----------------------------------------------+

6. | CONCAT('Last procedure was ',@last_proc |

7. +-----------------------------------------------+

8. | Last procedure was p1 |

9. +-----------------------------------------------+

注意:

①用户变量名一般以@开头

②滥用用户变量会导致程序难以理解及管理

(5). 注释

MySQL存储过程可使用两种风格的注释

双模杠:--

该风格一般用于单行注释

c风格:/* 注释内容*/ 一般用于多行注释

例如:

1. mysql > DELIMITER //

2. mysql > CREATE PROCEDURE proc1 --name存储过程名

3. -> (IN parameter1 INTEGER) /* parameters参数*/

4. -> BEGIN /* start of block语句块头*/

5. -> DECLARE variable1 CHAR(10); /* variables变量声明*/

6. -> IF parameter1 = 17 THEN /* start of IF IF条件开始*/

7. -> SET variable1 = 'birds'; /* assignment赋值*/

8. -> ELSE

9. -> SET variable1 = 'beasts'; /* assignment赋值*/

10. -> END IF; /* end of IF IF结束*/

11. -> INSERT INTO table1 VALUES (variable1);/* statement SQL语句*/

12. -> END /* end of block语句块结束*/

13.

首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySql in的参数变量 下一篇mysql mybatis返回插入的主键id

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)
·使用华为开发者空间 (2025-12-27 04:19:24)
·Getting Started wit (2025-12-27 03:49:24)
·Ubuntu 上最好用的中 (2025-12-27 03:49:20)