我有以下UDF
drop function if exists getCurrency$$
create function getCurrency(dt datetime, x decimal(19,4), y decimal(19, 4))
returns decimal(10,4) reads sql data
begin
declare currencyval decimal(10,4);
/* Some conditions */
select case when dt = "2000-12-31" then 0 else round((x/y), 4) into currencyval;
return currencyval;
end$$
Run Code Online (Sandbox Code Playgroud)
有时,此UDF会引发数据截断错误.我可以解决这个问题,但之前我甚至想要一些有关Decimal数据类型和参数中10,4的重要性的信息.
如果你给出边界条件的一些例子会很好.
10, 4 表示点之前的6位(整数部分)和之后的4位(小数部分).
所以你可以回归的最大数量是 999999.9999
在您的特定情况下,无法说出哪些值是x和/或的边界y,但您可以检查返回值(currencyval)是否超出-999999.9999 .. 999999.9999范围.
顺便说一句,如果你问x及y的DECIMAL (x, y)记录,那么:
x = 1..65y = 0..30 && y <= x参考文献:
| 归档时间: |
|
| 查看次数: |
5157 次 |
| 最近记录: |