我有一个调用另一个过程B的过程A.我想知道在B中是否有可能获得有关调用它的对象的信息。我的真正目的是在从A调用B时抑制B的输出,否则在从A外部调用它时显示它的输出。
谢谢, PRATIK
答案 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