set @s=concat('alter table ',concat(dbname, '.', dablename),' rename to ',concat(dbname, '.', tabletime
))
你创建一个存储过程C先执行存储过程A,并得到返回值
再判断返回值执行存储过程B
例如:
mysql>\d //
mysql> create procedure test(v_name char(20),out v_id int)
-> BEGIN
->SELECT id into v_id from t1 WHERE name=v_name
->END
->//
mysql> create procedure test1(v_id int,out v_name char(20))
->BEGIN
->SELECT name into v_name from t2 where id=v_id
->END
->//
mysql>create procedure test2(inout v_name char(20))
->BEGIN
->DECLARE v_id int
->CALL test(v_name,v_id)
->CALL test1(v_id,v_name)
->END
->//
mysql>set @aa='xx‘//
Query OK, 0 rows affected (0.00 sec)
mysql>call test2(@aa) //
Query OK, 0 rows affected (0.01 sec)
mysql>select @aa//
+------+
| @aa |
+------+
| x2 |
+------+
1 row in set (0.00 sec)
1、存储过程定义:
存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发 人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
2、特点:
封装,复用 : 可以把某一业务SQL封装在存储过程中,需要用到 的时候直接调用即可。
可以接收参数,也可以返回数据 :再存储过程中,可以传递参数,也可以接收返回 值。
减少网络交互,效率提升 : 如果涉及到多条SQL,每执行一次都是一次网络传 输。 而如果封装在存储过程中,我们只需要网络交互一次可能就可以了。
3、基本语法
(1)创建:
(2)调用:
(3)查看:
(4)删除
注意: 在命令行中,执行创建存储过程的SQL时,需要通过关键字 delimiter 指定SQL语句的 结束符。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)