Эту технику рассмотрим на примере вот такого WEB-контрола фильтрации и отбора товара:



Этот контрол использует вот такую процедуру:



И три вот такие функции:









Как видите для пользователя все просто. Он может одновременно задавать на форме любую комбинацию фильтров и слов поиска. Проблема заключается в реализации процедуры. Глядя на нее, можно подумать то процедура разбита на раздельные функции только для испольнения раздельной компиляции. Однако это не так. Это сделано из-за сортировки, которую нельзя выполнить по нужному мне полю из-за Group By. А компиляция, несмотря на рабиение процедуры на несколько SQL-batch все равно выдает ЕДИНЫЙ план процедур и вызванных функций. И при исполнении этого плана проверяется чтобы функции FreeText не получила на вход пустой аргумент. В противном случае - сайт падает с предупреждением: Null or empty full-text predicate.

Примерно то же происходит если использовать в бейсике функцию IIF вместо оператора IF-THEN-ELSE. Проверяется корректность всех аргументов. Теперь вернитесь на процедуру и посмотрите на переменные с постфиксом LOCAL, которыми обеспечивается корректность аргументов для FreeText на этапе их проверки. На такие простейшие фишки часто попадаются начинающие SQL-программисты.

Удачи!



Comments ( )
<00>  <01>  <02>  <03>  <04>  <05>  <06>  <07>  <08>  <09>  <10>  <11>  <12>  <13>  <14>  <15>  <16>  <17>  <18>  <19>  <20>  <21>  <22>  <23
Link to this page: //www.vb-net.com/sql/opt.htm
<SITEMAP>  <MVC>  <ASP>  <NET>  <DATA>  <KIOSK>  <FLEX>  <SQL>  <NOTES>  <LINUX>  <MONO>  <FREEWARE>  <DOCS>  <ENG>  <CHAT ME>  <ABOUT ME>  < THANKS ME>