获取MySQL中

时间:2016-07-18 03:31:13

标签: mysql stored-procedures

我有一个调用另一个过程B的过程A.我想知道在B中是否有可能获得有关调用它的对象的信息。我的真正目的是在从A调用B时抑制B的输出,否则在从A外部调用它时显示它的输出。

谢谢, PRATIK

1 个答案:

答案 0 :(得分:1)

Pratik,我认为以下内容非常明显。测试部分位于底部。如果procB相应地调用procA,则procA将不会呈现结果集(通过参数)。如果在drop table if exists flimFlam; create table flimFlam ( id int auto_increment primary key, thing varchar(100) not null, calledBy varchar(100) not null, theWhen datetime not null ); 之外调用,则根据参数,它将呈现结果集。所以你可以用这种方式构建你的构建块。

<强>架构:

drop procedure if exists procA;
DELIMITER $$
create procedure procA()
BEGIN
    call procB('fromA');
    select 7 as seven;
END$$
DELIMITER $$

drop procedure if exists procB;
DELIMITER $$
create procedure procB(fromWhom varchar(20))
BEGIN
    insert flimFlam(thing,calledBy,theWhen) select 'blah',fromWhom,now();
    IF fromWhom != 'fromA' THEN
        select * from flimFlam;
    END IF;
END$$
DELIMITER $$

两个过程:

-- truncate table flimFlam;
call procB('Not from procA');
call procB('Not from procA');
call procA();
select * from flimFlam;
+----+-------+----------------+---------------------+
| id | thing | calledBy       | theWhen             |
+----+-------+----------------+---------------------+
|  1 | blah  | Not from procA | 2016-07-18 00:07:21 |
|  2 | blah  | Not from procA | 2016-07-18 00:07:29 |
|  3 | blah  | fromA          | 2016-07-18 00:07:43 |
+----+-------+----------------+---------------------+

测试:

VARCHAR