1 | |||||||||||||||||||||
Как составить запрос в хранимой процедуре с возможностью передачи NULL параметров17.08.2012, 15:01. Показов 7222. Ответов 6
Метки нет (Все метки)
Есть хранимая процедура, которая не работает как надо. Она используется для поиска данных в базе по переданным параметрам.
Это метод класса (вызываю хранимую процедуру я не этим методом, это просто пример того как я строю запрос без хранимой процедуры):
0
|
17.08.2012, 15:01 | |
Ответы с готовыми решениями:
6
Выходной параметр в хранимой процедуре возвращает null Передача параметров в хранимой процедуре Проверка входных параметров в хранимой процедуре Использование не всех параметров в хранимой процедуре |
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,270
|
|||||||||||
17.08.2012, 16:13 | 2 | ||||||||||
Да?! Интересно.
Вообще-то, получим
ибо из-за NULL второе условие вернёт UNKNOWN. Это если не установлен SET CONCAT_NULL_YIELDS_NULL OFF Но в ближайшей версии сервера всегда будет ON. И сейчас рекомендуется ON
1
|
17.08.2012, 18:23 [ТС] | 3 |
Я говорил про код C#.
Добавлено через 1 час 4 минуты Не работает код, который вы дали. Не работает так, как мне нужно. Есть 3 строки поиска в программе "Имя", "Почтовый индекс", "Номер телефона". Человек вводит в поиск данные и программа отправляет запрос хранимой процедуре, но реально можно что-то найти таким поиском, если введены все 3 параметра поиска, а пользователь может ввести их в любой комбинации. При том номер телефона в базе данных может быть NULL, всё остальное не может. Я уже замучался составлять этот запрос, так и не составил.
0
|
17.08.2012, 18:45 [ТС] | 4 |
Если запрос составлять в коде C# и отправлять его напрямую без хранимой процедуры, то я могу составлять любые комбинации этого запроса, которые я выше показывал, а вы не поняли меня. А вот в хранимой процедуре как описать не знаю.
Добавлено через 18 минут Если "Имя" равно пустая строка, то не учитывать вообще имя в запросе SELECT * FROM, если "почтовый индекс" равен пустой строке, то не учитывать и его. Ну это примерно так. Пускай вообще нельзя передавать параметры NULL, если передана пустая строка, то не учитывать её в условии поиска. Вот как это сделать?
0
|
3394 / 1314 / 469
Регистрация: 31.05.2012
Сообщений: 4,653
|
|
17.08.2012, 22:24 | 5 |
Можно в той же процедуре не загромождать WHERE анализами на NULL и OR-ами, а сформировать условие и сам запрос динамически и выполнить EXEC (@s)
0
|
18.08.2012, 10:54 [ТС] | 6 |
Может и можно, но чувствую, чтобы я это мог делать сам, мне надо недели 2 сидеть книгук читать и примеры с неё делать, а я пока учу вообще работу с базами данных на C#. T-SQL ещё успеется, там в C# вообще столько всего, что можно учить не один год.
0
|
3394 / 1314 / 469
Регистрация: 31.05.2012
Сообщений: 4,653
|
||||||
19.08.2012, 12:08 | 7 | |||||
1
|
19.08.2012, 12:08 | |
19.08.2012, 12:08 | |
Помогаю со студенческими работами здесь
7
Запрос по хранимой процедуре Запрос в хранимой процедуре Запрос SQL в хранимой процедуре Запрос из строковой переменной в хранимой процедуре Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |