mysql - 是否可以在 MySQL 中定义一个未指定返回类型的存储函数?

标签 mysql stored-procedures types

我怀疑这个问题的答案是“否”,纯粹基于一般类型安全的概念,但无论如何我都会问。

如果我在 MySQL 中定义存储函数,通常 CREATE 语法的一部分会定义函数的返回类型。

是否可以定义一个返回类型是两种可能类型之一的类型,具体取决于结果,但调用者不知道哪一种类型?具体来说,我有兴趣根据返回的值指定具有两种不同精度的 DECIMAL 类型,这样我就不必在使用这些值的任何地方显式地 CAST 这些值.

我知道我可以显式使用,例如,CASECAST 来更改存储过程或常规语句中的精度,但我想抽象该代码放入存储的函数中。

最佳答案

我的答案是“为什么?”,而不是“不!”。 :-)

如果不可能,请创建两个存储过程!一个将给出最高精度的结果,第二个接受较低精度的参数,调用高精度函数并将结果转换回较低的精度。

两个不同的函数具有两个不同的足迹,但基本上它们只是做相同的事情。

抽象仅在使用面向对象的方法时才有用。但数据库中的存储过程不是面向对象的,只是简单的方法。

关于mysql - 是否可以在 MySQL 中定义一个未指定返回类型的存储函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1399442/

上一篇:mysql 加入和限制

下一篇:MySQL 多表多行

相关文章:

stored-procedures - MSSQL2000 : Using a stored procedure results as a table in sql

oracle - 检查是否存在 PLS-00405 : subquery not allowed in this context

php - 如何防止在我的服务器上上传每一个恶意文件? (检查文件类型)?

mysql - 子查询上的 SQL RIGHT JOIN 不起作用

mysql 查询连接两个表

PostgreSQL 函数选择*

node.js - TypeScript、类型定义和 websockets/ws : How to access event information?

模块及其类型的继承

mysql - 有没有办法按单一类型对具有多个属性类型的对象进行排序?

php - PDO 使用 while 和 foreach 获取