【问题标题】:MySQL stored procedure - How to Return NothingMySQL 存储过程 - 如何不返回任何内容
【发布时间】:2012-08-20 23:39:22
【问题描述】:

我有一个存储过程 SP1,它像这样调用另一个存储过程 SP2:

CREATE PROCEDURE SP1()
BEGIN
    CALL SP2();
END

SP2 存储过程从表中返回一行,但我不希望 SP1 返回任何内容。我尝试声明一个虚拟变量并以“SELECT 0 INTO dummy”之类的内容结束 SP1(),但似乎没有任何效果......

有没有简单的方法让 SP1 不从 SP2 返回行?

【问题讨论】:

  • 将参数传递给SP2,例如exec_select,检查它并在exec_select为真时执行SELECT语句。
  • MySQL 中的存储过程称为例程。您应该在问题中更改它以使其更清楚。

标签: mysql stored-procedures


【解决方案1】:

存储过程的返回类型为Int,不能更改为返回NULL
这看起来像The X Y Problem
你为什么从SP1 打电话给SP2?如果返回值造成问题,也许你可以改变你的设计。

【讨论】:

  • 我同意我正在尝试做的只是一些 hack... 只是想为一些我无法重新设计的遗留代码快速制作一些东西。
  • 我也认为存储过程返回 INT,但是当我从我的 GUI 前端 (SQLyog) 执行一个“不返回任何内容”的过程时,我收到消息显示“0 行受影响”并且没有其他返回。为什么我看不到 INT?
  • 嗯,你几乎已经回答了自己。 INT 是受影响的行数。在您的情况下,您没有任何受影响的行。 Int 影响行 = 0;
猜你喜欢
  • 2014-09-01
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
相关资源
最近更新 更多