我怀疑这个问题的答案是“不”,完全基于类型安全的概念,但无论如何我都要问。
如果我在MySQL中定义存储函数,通常CREATE
语法的一部分定义函数的返回类型。
是否可以定义一个返回类型是两种可能类型之一,具体取决于结果,但调用者不知道?具体来说,我有兴趣根据返回的值指定具有两个不同精度的DECIMAL
类型,这样在使用它们的任何地方我都不需要CAST
这些值。
我知道我可以明确地使用,例如CASE
和CAST
来更改存储过程或常规语句的精度,但我想将该代码抽象为存储功能
答案 0 :(得分:1)
我的回答是“为什么?”,而不是“不!”。 : - )
如果不可能,请创建两个存储过程!一个将给出具有最高精度的结果,另一个接受具有较低精度的参数,该参数调用高精度函数,并将结果转换回较低的精度。
两种不同的功能,两种不同的脚印,但基本上它们只是做同样的事情。
抽象仅在您使用面向对象的方法时才有用。但是数据库中的存储过程不是OO,只是简单的方法。