1

我对在准备执行存储过程中使用的以下代码有疑问:

if(param_cod_empresa_pad='') then
set @param_cod_empresa_pad=true;
set @condicion18='and ? ';
elseif(param_cod_empresa_pad='0') then
set @param_cod_empresa_pad=null;
set @condicion18='and pc.cod_empresa_pad is ? ';
else
set @param_cod_empresa_pad=param_cod_empresa_pad;
set @condicion18='and pc.cod_empresa_pad=? ';
end if;

param_cod_empresa_pad='0' 不起作用的第二个条件,我必须这样写:

set @param_cod_empresa_pad=true;
set @condicion18='and pc.cod_empresa_pad is null and ? ';

有人知道为什么吗?我想知道是否有更好的方法在 mysql 中使用动态 sql 调用空变量。

我也试过:

set @param_cod_empresa_pad='null';
set @condicion18='and pc.cod_empresa_pad is ? ';

但没有用。

4

1 回答 1

3

您不能使用iswith 参数。
或者,您可以使用在比较值时返回 true的<=>运算符。=null

null = null   -> false
null <=> null -> true
1 <=> 1       -> true
1 <=> 2       -> false

elseif(param_cod_empresa_pad='0') then
set @param_cod_empresa_pad=null;
set @condicion18='and pc.cod_empresa_pad <=> ? ';
于 2011-09-20T16:10:28.347 回答