Я подвергаю сомнению ценность использования логического значения в TSQL.
Каждый раз, когда я начинал мечтать о циклах Booleans & For, я понимал, что подхожу к проблеме, как программист на Си, а не программист на SQL. Проблема стала тривиальной, когда я переключил передачи.
В SQL вы управляете наборами данных. «WHERE BOOLEAN» неэффективен, так как не меняет набор, с которым вы работаете. Вам нужно сравнить каждую строку с чем-то, чтобы предложение фильтра было эффективным. Table / Resultset равен iEnumerable, оператор SELECT равен цикл FOREACH.
Да, "ГДЕ IsAdmin = True" читать лучше, чем "ГДЕ IsAdmin = 1"
Да, "WHERE True" будет лучше, чем "WHERE 1 = 1, ..." при динамическом генерировании TSQL.
и, возможно, передача логического значения в хранимый процесс может сделать оператор if более читабельным.
Но в основном, чем больше таблиц IF, WHILE и Temp у вас есть в вашем TSQL, тем больше вероятность того, что вам придется его реорганизовать.