Как сократить нулевой параметр curcit (SQL) - PullRequest
0 голосов
/ 17 августа 2010

Привет, друзья! У меня следующий запрос, который побеждает саму цель.

День назад я попросил предложить для сортировки схемы параметр, который является нулевым, для этого я получил предложение использовать
(@firstYrPercent is null OR first_year_percent>=@firstYrPercent) как этот, чтобы запретить нулевой параметр, но сегодня, когда я выполняю фактический запрос, я думаю, что вышеупомянутая идея бесполезна.

Я получаю sql исключение для всех тех параметров, которые имеют значение null, и для этих ошибок требуется значение, если перехватывается это исключение Sql:

«Параметризованный запрос» (@courseId int, @ passoutYear int, @ currentBacklog int, @ sex int, @ eG 'ожидает параметр @currentDegeePercentage, который не был предоставлен. "

Вот запрос, пожалуйста, предложите мне альтернативу:

string cmd = @"SELECT * FROM [tbl_students] WHERE course_id=@courseId 
          AND  branch_id IN(" + branchId + @") 
          AND (@firstYrPercent is null OR first_year_percent>=@firstYrPercent)
          AND (@secondYrpercent is null OR second_year_percent>=@secondYrPercent)
          AND (@thirdYrPercent is null OR third_year_percent>=@thirdYrPercent)
          AND (@finalYearpercent is null OR final_year_percent>=@finalYearpercent)
          AND (@currentDegeePercentage is null OR current_degree_percent>=@currentDegeePercentage)
          AND (@passoutYear is null OR passing_year>=@passoutYear) 
          AND (@currentBacklog is null OR current_backlog<=@currentBacklog)
          AND gender=@sex 
          AND (@eGap is null OR gapin_education<=@eGap)
          AND (@highSchoolPercentge is null OR highschool_percentage>=@highSchoolPercentge)
          AND (@higherSchoolPercentage is null OR ssc_percentage>=@higherSchoolPercentage)
          AND (@grauationPercentage is null OR graduation_percentage>=@grauationPercentage)
          AND (@diplomaPercentage is null OR diploma_percentage>=@diplomaPercentage)
          AND (@noOfAtkt is null OR number_of_ATKT<=@noOfAtkt)
          AND (@date is null OR DOB>=@date)";

Ответы [ 2 ]

1 голос
/ 17 августа 2010

Необходимо убедиться, что вы определяете параметр @currentDegeePercentage в выполняемой вами Команде - в частности, если вы хотите передать этот параметр как ноль, убедитесь, что параметр добавлен в команду со значением: DBNull.Value.

Если вы не добавляете параметр в коллекцию Command.Parameters или не добавляете его, а устанавливаете значение в null (в отличие от DBNull.Value), то вы получите ошибку, которую видите.

0 голосов
/ 17 августа 2010

Проблема не в том, что параметр null, а в том, что параметр отсутствует.Проверьте на опечатки (это "степень", а не "степень" [sic]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...