2011-07-29 83 views
1

当条件未满足时,我想中止/退出/从存储过程返回。 我不知道该怎么做。谷歌搜索并没有帮助我很多,因为:'返回'/中止mySql存储过程

  • 的MySQL版本,我们的服务器上为5.1(5.5 <,因此没有信号SQLSTATE)。
  • 我不想把所有东西放在if..then..else语句(在我的情况下将有多层次的嵌套)
  • 我不想调用an_invalid_procedure来引发异常。

是否有替代方案?

回答

0

我在这种情况下,做的是:

  1. 创建表称为errors有一列包含文本错误信息,并在其上UNIQUE索引。我用我想支持的错误填充表格。

  2. 当我需要特定的错误提出时,我将错误消息插入到errors表中。既然它已经在那里,我违反了一个UNIQUE键,所以会引发错误。在我的应用程序中,我可以看到MySQL错误#1062(这是'重复值的键...'错误的代码,并使用正则表达式来提取我的错误消息,以显示它给用户/登录/任何;

+0

好的。这也是一种选择。但是,我想这也是一个例外。我可以解析当我调用an_invalid_procedure时引发的异常。 –

+0

除了引发错误之外,我无法在MySQL中停止/中止storepd过程/触发器<5.5 – Mchl

+0

。然后,我会采用'raise and parse_exception'的方式。谢谢。 –

1

蹊跷....

... 
BEGIN 
<do stuff> 
IF (<your condition>) THEN 
    <do more stuff> 
END IF; 
END$$ 
+0

事情是我正在更新一些预先编写的存储过程,这个有10个连续的步骤,没有任何检查!我的任务是添加检查并退出,只要检查失败我不希望有一个级别嵌套的块。 –

+0

TJ-:你不需要嵌套检查,在SP的开头有一个变量'@ success'设置为true,然后将它与所有检查一起使用,并在检查失败时将其设置为false。 – Mchl

+0

是的,我没有想到,但是我可以通知调用代码发生了什么错误吗? –