2013-12-12 29 views
0

接受空我有调用存储函数以下查询:MySQL的:存储功能不能从视场

select count(*) 
    from vw_estatus_empleados vw 
where nivel_color_id('Cumplimiento', vw.estatus_actual) = -1; 

nivel_color_id函数返回-1当第二个参数是空值。

其实,vw.estatus_actual字段有null在所有行

当运行结果上方的查询是:

+----------+ 
| count(*) | 
+----------+ 
|  0 | 
+----------+ 

通过另一方面,当我运行的null代替vw.estatus_actual相同的查询:

select count(*) 
    from vw_estatus_empleados vw 
where nivel_color_id('Cumplimiento', null) = -1; 

结果是:

+----------+ 
| count(*) | 
+----------+ 
|  19 | 
+----------+ 

以下是函数标题:

CREATE DEFINER=... 
FUNCTION `nivel_color_id`(`escala` VARCHAR(16), `valor` FLOAT) 
RETURNS int(11) 

为什么这可能发生?

编辑:

视图行示例:

SELECT * FROM vw_estatus_empleados 
WHERE estatus_actual IS NULL; 

+-------------+--------------+----------------+ 
| id_empleado | id_proveedor | estatus_actual | 
+-------------+--------------+----------------+ 
|   11 |   16 |   NULL | 
|   8 |   11 |   NULL | 
|   4 |   2 |   NULL | 
|   19 |   23 |   NULL | 
|   13 |   18 |   NULL | 
+-------------+--------------+----------------+ 

回答

0

你确定你的vw.estatus_actual实际上是设置为NULL,而不是只是一个空的空间“?

做一个SELECT * FROM vw_estatus_empleados WHERE estatus_actual IS NULL并查看返回的内容。

+0

请检查编辑 – nashuald