0

正如您在下面看到的,我有两个用于该过程的参数。我希望它们都是整数。但是,当我用非整数测试程序时,它仍然编译!为什么?

 create procedure int_arith( p_1 int, p_2 int)
 begin
  select coalesce(p_1 + p_2, 'Null entry') addition;
 end;
 #

 call test.a03_int_arith(10,3.3)\G

结果是:

        addition: 13
4

1 回答 1

1

在某些语言中将 double 提升为 int 是有效的(请参阅类型转换)。正在发生的是解释器(无论是编译器)在这个 3.3 中看到双精度,并将其截断为整数(隐式地将双精度转换为 int)。

于 2012-10-05T19:45:07.680 回答