代码之家  ›  专栏  ›  技术社区  ›  sergiogx

mysql存储过程的多态性替代

  •  1
  • sergiogx  · 技术社区  · 16 年前

    我正在将一些存储过程从Informix移植到MySQL,但是我在Informix上有两个存储过程具有相同的名称和不同的参数。

    在MySQL中,不能创建两个同名的SP,也不能创建参数中有默认值的SP。

    那么,有人知道有什么黑客或者黑魔法可以帮助我解决这个问题吗?

    谢谢。

    1 回复  |  直到 16 年前
        1
  •  2
  •   lexu    16 年前

    我们在将一个数字处理应用程序从Informix移植到MySQL时遇到了同样的问题。

    通过将参数计数添加到过程名称中,“解决”了该问题…

    INFORMIX                     MySQL
    -------------------------    ---------------------------
    min(int a, int b)         => min2(int a, int b)
    min(int a, int b, int c)  => min3(int a, int b, int c)
    

    这是因为调用应用程序(Perl脚本)总是准确知道有多少参数。