procedure参数是int,但是当用double调用procedure时,它会编译

时间:2012-10-05 19:42:29

标签: mysql variable-assignment

如下所示,我有两个参数。我希望它们都是整数。但是,当我用非整数测试过程时,它仍然编译!为什么呢?

 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

1 个答案:

答案 0 :(得分:1)

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