Bueno, no se que tan eficiente sea porque aún no le he hecho pruebas, pero se me ocurre que podrias usarlo asi:
Código SQL
[-]
if :CODIGO is null then
:CODIGO = '%%%%%';
if :MARCA is null then
:MARCA = '%%%%%';
if :PRODUCTO is null then
:PRODUCTO = '%%%%%';
Where Codigo like(:CODIGO) and Marca like(:MARCA) and Producto like(:PRODUCTO)
Pruebalo y nos cuentas como te va