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' が機能しない 2 番目の条件は、次のように記述する必要があります。

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

理由を知っている人はいますか?mysql で動的 sql を使用して null 変数を呼び出すより良い方法があるかどうかを知りたいです。

私も試しました:

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

しかし、うまくいきませんでした。

4

1 に答える 1

3

isパラメータでは使用できません。または、値を比較するときに 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 に答える