mysql - 在另一个存储过程中使用mysql存储过程的结果集

标签 mysql stored-procedures

我有一个返回结果集的 MYSQL 存储过程 SP1()。

我想在 SP2() 内部调用 SP1() 并循环遍历 SP1() 的结果集来做一些额外的工作。

我不想包含 SP1() 中的逻辑,因为它会使 SP2() 太复杂。

有什么建议吗?

谢谢。

最佳答案

你想做什么听起来不是特别好,也许你应该考虑重新设计这 2 个过程。但是,您可以做这样的事情作为快速修复:

让您的 sp2 sproc 将它的中间结果写入一个临时表,然后您可以在 sp1 内部访问/处理该临时表。一旦 sp1 返回,您就可以删除在 sp2 中创建的临时表。

http://pastie.org/883881

delimiter ;
drop procedure if exists foo;
delimiter #

create procedure foo()
begin

  create temporary table tmp_users select * from users;

  -- do stuff with tmp_users

  call bar();

  drop temporary table if exists tmp_users;

end #

delimiter ;

drop procedure if exists bar;

delimiter #

create procedure bar()
begin
  -- do more stuff with tmp_users
  select * from tmp_users;
end #

delimiter ;

call foo();

不是很优雅,但应该可以解决问题

关于mysql - 在另一个存储过程中使用mysql存储过程的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12313100/

相关文章:

java - 使用 Java 调用 PostgreSQL 存储过程返回 null

mysql - 在查询结果中,防止系列中最后一个数字后面出现逗号

php - 如何在 PHP 中安排 MySQL 数据库的定期更新?

mysql - 创建列出数字 1 到 500,000 的 SQL 表有什么好处?

mysql - 如何自动化 Hive 查询

php - 使用 PHP 从 MySQL Pivot 存储过程中选择

mysql - 为什么我不能插入到同一个表上的触发器调用的 SP 中的表中?

REST 尝试连接到数据库时出现 java.sql.SQLException : No suitable driver,

mysql - inner join select (A,B) on A and B vs where (A,B) in select(A, B) in mysql

c# - 将变量传递给存储过程,c#