我怀疑这个问题的答案是“否”,纯粹基于一般类型安全的概念,但无论如何我都会问。
如果我在 MySQL 中定义存储函数,通常 CREATE
语法的一部分会定义函数的返回类型。
是否可以定义一个返回类型是两种可能类型之一的类型,具体取决于结果,但调用者不知道哪一种类型?具体来说,我有兴趣根据返回的值指定具有两种不同精度的 DECIMAL
类型,这样我就不必在使用这些值的任何地方显式地 CAST
这些值.
我知道我可以显式使用,例如,CASE
和 CAST
来更改存储过程或常规语句中的精度,但我想抽象该代码放入存储的函数中。
最佳答案
我的答案是“为什么?”,而不是“不!”。 :-)
如果不可能,请创建两个存储过程!一个将给出最高精度的结果,第二个接受较低精度的参数,调用高精度函数并将结果转换回较低的精度。
两个不同的函数具有两个不同的足迹,但基本上它们只是做相同的事情。
抽象仅在使用面向对象的方法时才有用。但数据库中的存储过程不是面向对象的,只是简单的方法。
关于mysql - 是否可以在 MySQL 中定义一个未指定返回类型的存储函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1399442/