Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос по ХП / 21 сообщений из 21, страница 1 из 1
16.10.2003, 13:49
    #32295299
Антон27
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ХП
Сразу прошу прощения за глупый ,наверное, вопрос.
Можно ли в хранимых процедурах использовать выражение IF...Else?
СУБД MSSQL2000.
Спасибо.
...
Рейтинг: 0 / 0
16.10.2003, 13:59
    #32295324
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ХП
Нужно пользоваться поиском
...
Рейтинг: 0 / 0
16.10.2003, 14:01
    #32295329
Shkurenko Alexander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ХП
нет.
Используй CASE ... WHEN ...
...
Рейтинг: 0 / 0
16.10.2003, 14:05
    #32295332
Антон27
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ХП
Всем спасибо:)
Будем разбираться с CASE:)
...
Рейтинг: 0 / 0
16.10.2003, 14:14
    #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
16.10.2003, 14:21
    #32295349
Антон27
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ХП
ХМ ВОПРОС.
А можно использовать CASE в условии WHERE?

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

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

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

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

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

Shkurenko Alexander
Не чего страшного:))
...
Рейтинг: 0 / 0
16.10.2003, 16:07
    #32295591
Shkurenko Alexander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ХП
Антон, попробуй создавать запрос динамически, либо воспользуйся
Код: plaintext
( ISNULL(@Field1_Value) OR ([Table].[Field1] = @Field1_Value) )
...
Рейтинг: 0 / 0
16.10.2003, 16:13
    #32295605
Shkurenko Alexander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ХП
Опять наврал, сколько раз себе повторял - не говори гоп пока не посмотрел куда прыгнул.
Нужно:
Код: plaintext
( (@Field1_Value IS NULL) OR ([Table].[Field1] = @Field1_Value) )
...
Рейтинг: 0 / 0
16.10.2003, 16:18
    #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
16.10.2003, 16:22
    #32295625
Антон27
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ХП
Shkurenko Alexander

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

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

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

Если переменная @Field1_Value пустая то второе равенство не выполняется, а если не пустая то первое - не выполняется.
...
Рейтинг: 0 / 0
16.10.2003, 17:04
    #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
16.10.2003, 17:16
    #32295715
Alex_2003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ХП
небольшая поправочка - не нужно выполнять равенство с NULL, нужно писать (@fiorus IS NULL), так правильнее и работает всегда.
...
Рейтинг: 0 / 0
16.10.2003, 17:22
    #32295726
Антон27
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ХП
Благодарю за поправку:)

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


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