gpt4 book ai didi

postgresql - PL/pgSQL 9.3.5 中不计算简单算术表达式

转载 作者:行者123 更新时间:2023-11-29 13:24:38 25 4
gpt4 key购买 nike

我正在编写一个用户定义的函数,但在做简单的算术运算时遇到了很多麻烦:

...
DECLARE
alpha numeric;
BEGIN
RAISE NOTICE 'alpha: %', alpha; --alpha is NULL here
RAISE NOTICE 'period: %', period; --period is an integer function param, it's 10
alpha := 2/(period + 1);
RAISE NOTICE 'alpha: %', alpha; --alpha is zero (!) here
...
END;

但是如果我分两步计算 alpha,它就可以正常工作:

...
DECLARE
alpha numeric;
BEGIN
RAISE NOTICE 'period: %', period; --period is 10
alpha := period + 1; --alpha is 11 here
alpha := 2/alpha; --alpha is 0.1818...
...
END;

这是怎么回事? alpha 是否在第一个表达式中被转换为整数并四舍五入为零?

最佳答案

我怀疑问题出在 Postgres 做整数除法。所以,只需添加一个小数点:

alpha := 2.0/(period + 1);

关于postgresql - PL/pgSQL 9.3.5 中不计算简单算术表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36026117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com