|
|
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Сразу прошу прощения за глупый ,наверное, вопрос. Можно ли в хранимых процедурах использовать выражение IF...Else? СУБД MSSQL2000. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 13:49 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Нужно пользоваться поиском ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 13:59 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
нет. Используй CASE ... WHEN ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 14:01 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Всем спасибо:) Будем разбираться с CASE:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 14:05 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
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." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 14:14 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
ХМ ВОПРОС. А можно использовать CASE в условии WHERE? Блин, ладно все сначала, я хочю сделать поиск по базе, но дело в том что условий для поиска много и не факт что все надо заполнять, а писать штук 12 хранимых процедур , одинаковых различие только в условиях запроса, чет не охота, да и мне кажеться что это не совсем прально. Вот я и решил что может написать одну большую ХП, в которой и будет в зависимости от заполнения поля подставляться тот или иной параметр для запроса. Какие есть идеи?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 14:21 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Кто это сказал, что нельзя пользоваться IF..ELSE в ХП?? Прошу прощения у Антона, что ввел его в заблуждение. Конечно же этой конструкцией можно ползоваться в T-SQL. IF .. ELSE спутал с Iif( , , ). После работы совсем запурхался :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 15:16 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Вероятно, в форме количество полей, для ввода критериев отбора, ограничено. Тогда в ХП попросту декларируй параметры для каждого поля ввода со значениями по умолчанию (@fCount float = 1) и используй в селекте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 15:37 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Витал Тоесть, как я понял, мне надо комбинировать значения полей и в той или иной ситуации выполнять разный селект? В принцепе я так и делаю, но уж слишком большой получаеться ХП:( Если Вам не трудно, я могу вам скинуть на мыло часть этой ХП и Вы может быть скажете прально я делаю или нет?:) Shkurenko Alexander Не чего страшного:)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 15:56 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Антон, попробуй создавать запрос динамически, либо воспользуйся Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 16:07 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Опять наврал, сколько раз себе повторял - не говори гоп пока не посмотрел куда прыгнул. Нужно: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 16:13 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
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, так это что мне для каждой возможной ситуации, расписывать Тогда ХП до неимоверных размеров вырастит, и еще не извесно как долго будет исполняться:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 16:18 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Shkurenko Alexander Ага вот так понятнее, тоесть это код надо писать непосредственно в предложении Where, ТАК?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 16:22 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Если сама выборка, т.е. конструкция SELECT...FROM... имеет одинаковую структуру(выбираются одни и те же поля из одной и той же таблицы), то предлагаю объявить переменную в ХП DECALRE @Where varchar(100) а дальше в зависимости от условий формировать переменную @Where, которую подставить в сам запрос в конце ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 16:43 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Господи работает)))))))))))) КласC Shkurenko Alexander Огромное человеческое спасибо) Блин не ну надоже, вот только почему работает чет не как не могу понять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 16:46 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Alex_2003 Идея хорошая, но опять если имееться 12 полей, то посчитай сколько комбинаций должно быть:) Shkurenko Alexander, на мой взгляд, саму хорошую идею подал, да к томуже и рабочую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 16:50 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Антон Блин не ну надоже, вот только почему работает чет не как не могу понять Булева алгебра - таблица истинности. Без нее родимой, нам программистам никуда не деться. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 16:52 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Shkurenko Alexander Прости а можно немного поподробнее. КАК я понял : ( (@Field1_Value IS NULL) OR ([Table].[Field1] = @Field1_Value) ) Если переменная @Field1_Value пустая то второе равенство не выполняется, а если не пустая то первое - не выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 17:01 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
Shkurenko Alexander вот что у меня получилось: WHERE ((@fiorus=null)or(dbo.inostr_gra.fio LIKE '%' + @fiorus + '%'))and((@country=null)or(dbo.inostr_gra.country_id = @country)) Вот еще что не понятно, почему если все переменные NULL выводяться все данные из таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 17:04 |
|
||
|
Вопрос по ХП
|
|||
|---|---|---|---|
|
#18+
небольшая поправочка - не нужно выполнять равенство с NULL, нужно писать (@fiorus IS NULL), так правильнее и работает всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2003, 17:16 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32295672&tid=1678831]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
94ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 479ms |

| 0 / 0 |
