powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос по ХП
21 сообщений из 21, страница 1 из 1
Вопрос по ХП
    #32295299
Антон27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сразу прошу прощения за глупый ,наверное, вопрос.
Можно ли в хранимых процедурах использовать выражение IF...Else?
СУБД MSSQL2000.
Спасибо.
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295324
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно пользоваться поиском
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295329
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет.
Используй CASE ... WHEN ...
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295332
Антон27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо:)
Будем разбираться с CASE:)
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295341
Alex_2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Shkurenko Alexander
Кто это сказал, что нельзя пользоваться IF..ELSE в ХП??

BOL нужно читать внимательно:
"IF...ELSE constructs can be used in batches, in stored procedures (in which these constructs are often used to test for the existence of some parameter), and in ad hoc queries."
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295349
Антон27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ХМ ВОПРОС.
А можно использовать CASE в условии WHERE?

Блин, ладно все сначала,
я хочю сделать поиск по базе, но дело в том что условий для поиска много и не факт что все надо заполнять, а писать штук 12 хранимых процедур , одинаковых различие только в условиях запроса, чет не охота, да и мне кажеться что это не совсем прально.

Вот я и решил что может написать одну большую ХП, в которой и будет в зависимости от заполнения поля подставляться тот или иной параметр для запроса.

Какие есть идеи?:)
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295464
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто это сказал, что нельзя пользоваться IF..ELSE в ХП??

Прошу прощения у Антона, что ввел его в заблуждение. Конечно же этой конструкцией можно ползоваться в T-SQL. IF .. ELSE спутал с Iif( , , ).
После работы совсем запурхался :-(
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295512
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно, в форме количество полей, для ввода критериев отбора, ограничено.
Тогда в ХП попросту декларируй параметры для каждого поля ввода со значениями по умолчанию (@fCount float = 1) и используй в селекте.
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295559
Антон27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Витал
Тоесть, как я понял, мне надо комбинировать значения полей и в той или иной ситуации выполнять разный селект?
В принцепе я так и делаю, но уж слишком большой получаеться ХП:(

Если Вам не трудно, я могу вам скинуть на мыло часть этой ХП и Вы может быть скажете прально я делаю или нет?:)

Shkurenko Alexander
Не чего страшного:))
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295591
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон, попробуй создавать запрос динамически, либо воспользуйся
Код: plaintext
( ISNULL(@Field1_Value) OR ([Table].[Field1] = @Field1_Value) )
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295605
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять наврал, сколько раз себе повторял - не говори гоп пока не посмотрел куда прыгнул.
Нужно:
Код: plaintext
( (@Field1_Value IS NULL) OR ([Table].[Field1] = @Field1_Value) )
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295614
Антон27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shkurenko Alexander
ТАк а где мне этот кусок кода писать?:)

Вот что есть у меня щаз:

CREATE PROCEDURE dbo.find(@country int, @fiorus varchar(100))
AS
IF @country=0
Begin
Select ............
from......
WHERE (dbo.inostr_gra.fio LIKE '%' + @fiorus + '%')
end
IF @fiorus=null
Begin
Select ............
from......
WHERE (dbo.inostr_gra.country_id = @country)
end
else
Begin
Select ............
from......
WHERE (dbo.inostr_gra.fio LIKE '%' + @fiorus + '%') and (dbo.inostr_gra.country_id = @country)
end
GO


Ну и так далее критерием гдето около 12, так это что мне для каждой возможной ситуации, расписывать
Тогда ХП до неимоверных размеров вырастит, и еще не извесно как долго будет исполняться:(
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295625
Антон27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shkurenko Alexander

Ага вот так понятнее, тоесть это код надо писать непосредственно в предложении Where, ТАК?:)
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295651
Alex_2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если сама выборка, т.е. конструкция SELECT...FROM... имеет одинаковую структуру(выбираются одни и те же поля из одной и той же таблицы), то предлагаю объявить переменную в ХП
DECALRE @Where varchar(100)
а дальше в зависимости от условий формировать переменную @Where, которую подставить в сам запрос в конце ХП.
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295657
Антон27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господи работает))))))))))))
КласC
Shkurenko Alexander Огромное человеческое спасибо)
Блин не ну надоже, вот только почему работает чет не как не могу понять
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295667
Антон27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_2003
Идея хорошая, но опять если имееться 12 полей, то посчитай сколько комбинаций должно быть:)
Shkurenko Alexander, на мой взгляд, саму хорошую идею подал, да к томуже и рабочую
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295672
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон
Блин не ну надоже, вот только почему работает чет не как не могу понять

Булева алгебра - таблица истинности. Без нее родимой, нам программистам никуда не деться. :)
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295689
Антон27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shkurenko Alexander

Прости а можно немного поподробнее.
КАК я понял :
( (@Field1_Value IS NULL) OR ([Table].[Field1] = @Field1_Value) )

Если переменная @Field1_Value пустая то второе равенство не выполняется, а если не пустая то первое - не выполняется.
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295697
Антон27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shkurenko Alexander

вот что у меня получилось:

WHERE ((@fiorus=null)or(dbo.inostr_gra.fio LIKE '%' + @fiorus + '%'))and((@country=null)or(dbo.inostr_gra.country_id = @country))

Вот еще что не понятно, почему если все переменные NULL выводяться все данные из таблицы?
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295715
Alex_2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
небольшая поправочка - не нужно выполнять равенство с NULL, нужно писать (@fiorus IS NULL), так правильнее и работает всегда.
...
Рейтинг: 0 / 0
Вопрос по ХП
    #32295726
Антон27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю за поправку:)

А разве = и IS это не одно и тоже?:)
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос по ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]