mysql里边,存储过程之间相互调用
答案:2 悬赏:80
解决时间 2021-01-28 09:58
- 提问者网友:黑米和小志
- 2021-01-27 12:51
mysql里边,存储过程之间相互调用
最佳答案
- 二级知识专家网友:我住北渡口
- 2021-01-27 14:17
你创建一个存储过程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)
先执行存储过程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楼网友:洒脱疯子
- 2021-01-27 15:57
问题是这样,需要对mysql数据库中的一张表做备份操作,数据库在linux上,考虑用crontab对表定时备份,这张表是利用存储过程生成的,需要写一个shell脚本,调用mysql的这个存储过程,并且在shell中对生成的表做备份操作。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯