Wo liegt denn jetzt überhaupt das Problem?
Darin, dass die Spalten NULL fähig sind und falls keine Auswahl erfolgt ist alle Zeilen (unabhängig davon ob das Feld in der Zeile einen NULL-Wert enthält oder nicht) angezeigt werden sollen?

NULL-Werte müssen separat geprüft werden, da sie außerhalb des gültigen Bereichs liegen. Da NULL-Werte nicht direkt mit anderen NULL-Werten verglichen werden können, ist das Ganze ein bisschen tricky.
... aber die folgende Syntax sollte auch bei NULL-fähigen Spalten (im statischen SQL funktionieren), d.h. wenn in dem entsprechenden Feld (:HostCol) kein Wert erfasst wurde, werden alle Zeilen incl. den Zeilen, die in der entsprechenden Spalte NULL-Werte enthalten ausgegeben.
Code:
  Where     Col1   is not distinct from Case When :HostCol1 > '' Then :HostCol1 else Col1 End
        and Col1   is not distinct from Case When :HostCol2 >= -99999999 Then :HostCol2 Else Col2 End
        and MyDate is not distinct from Case When :HostCol3 > '0001-01-01' Then :HostCol3 Else Col3 End
        and ...