首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL -在一个查询中调用多个过程

MySQL -在一个查询中调用多个过程
EN

Stack Overflow用户
提问于 2022-06-15 08:07:39
回答 2查看 32关注 0票数 0

我在一个查询中多次调用过程时遇到了问题。当我分别打电话给每个人的时候,一切都很好。我没有在日常工作中使用MySQL,所以这可能是一个简单的问题:)谢谢帮助!

代码语言:javascript
运行
复制
CALL DATA_PROCEDURE('text1', 'text2', 1);
CALL DATA_PROCEDURE('text3', 'text4', 2);
CALL DATA_PROCEDURE('text5', 'text6', 3);
CALL DATA_PROCEDURE('text7', 'text8', 4);
EN

回答 2

Stack Overflow用户

发布于 2022-06-15 08:13:07

你可以试试我们的代码

代码语言:javascript
运行
复制
DELIMITER $$
CREATE PROCEDURE sp_abc()
BEGIN
  CALL sp_a();
  CALL sp_b();
  CALL sp_c();
END$$
DELIMITER 
票数 0
EN

Stack Overflow用户

发布于 2022-06-15 09:37:55

我不确定在父过程中调用同一个过程serveral时间是否很有意义,因为每个过程使用不同的in参数,所以不能简单地对预定义的X次重复相同的过程。但是,如果所有IN参数都有一个顺序模式,如下所示:

(textN,textN+1,X)

(textN+2、textN+3、X+1)

(textN+4、textN+5、X+2)

我们可以考虑使用更动态的方法来完成繁琐的任务:

代码语言:javascript
运行
复制
delimiter //
drop procedure if exists repeat_sproc//
create procedure repeat_sproc(counter int unsigned)
begin
declare n int default 1;
declare x int default 1;
lp:loop
if x>counter then
leave lp;
end if;
set @stmt=concat("call DATA_PROCEDURE('text",n,"', 'text",n+1,"',",x,");");
prepare stmt from @stmt;
execute stmt;
deallocate prepare stmt;
set n=n+2;
set x=x+1;
end loop lp; 

end//
delimiter ;
call repeat_sproc(4); -- run the nested procedure four times 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72627878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档