|
|
|
Процедура с параметром.
|
|||
|---|---|---|---|
|
#18+
Народ, у меня простая процедура: ------------------------------------------------------------------------- SELECT * FROM T_arm WHERE Id_otdel=p_id_otdel ------------------------------------------------------------------------- ,где: Id_otdel - поле p_id_otdel - параметр. Вопрос, как сделать условие такое, чтобы при вводе p_id_otdel=0 выводились все записи, а при вводе p_id_otdel<>0 - только записи с нужным номером ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 15:29 |
|
||
|
Процедура с параметром.
|
|||
|---|---|---|---|
|
#18+
WHERE iif(p_id_otdel=0,true,Id_otdel=p_id_otdel) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 15:31 |
|
||
|
Процедура с параметром.
|
|||
|---|---|---|---|
|
#18+
SELECT * FROM T_arm WHERE Id_otdel=p_id_otdel OR p_id_otdel=0 Хотя я бы вместо 0 использовал бы NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 15:33 |
|
||
|
Процедура с параметром.
|
|||
|---|---|---|---|
|
#18+
Спросили же - при вводе.... Пишешь: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Если на T-SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 15:40 |
|
||
|
Процедура с параметром.
|
|||
|---|---|---|---|
|
#18+
Если делать так, как советует Hummer , процедура будет компилироваться при каждом вызове. Метод Latuk избавлен от этого недостатка. Это если на T-SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 15:55 |
|
||
|
Процедура с параметром.
|
|||
|---|---|---|---|
|
#18+
2 Pavel Согласен. Не учёл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 16:02 |
|
||
|
Процедура с параметром.
|
|||
|---|---|---|---|
|
#18+
А мне у Хаммер больше нравится. Хай с ним компилируется(правда я не понимаю, почему), Зато запрос проще и работает шибче:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 16:11 |
|
||
|
Процедура с параметром.
|
|||
|---|---|---|---|
|
#18+
2 Shark А мне у Хаммер больше нравится. Хай с ним компилируется(правда я не понимаю, почему), Зато запрос проще и работает шибче:-) Посмотри план выполнения процедуры при разных параметрах. Проще и шибче только с точки зрения человек, но никак не T-SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 16:37 |
|
||
|
Процедура с параметром.
|
|||
|---|---|---|---|
|
#18+
Дело не в компиляции процедуры - не будем путаться - если не стоит WITH RECOMPILE - повторной компиляции не будет, а в логике отбора записей, в данном случае предпочтительнее метод Latuk - вот и всё... 2 incold План выполнения процедуры одинаков при разных параметрах:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 17:05 |
|
||
|
Процедура с параметром.
|
|||
|---|---|---|---|
|
#18+
2 Hummer План выполнения процедуры одинаков при разных параметрах:) Так а я о чем?! Ведь с точки зрения человека (или акулы ): при одном параметре заход в одну ветку - план один при другом значении параметра заход в другую ветку план другой А на самом деле: вне зависимости от параметра план строится для двух запросов, а выполняется только один в зависимости от параметра. В варианте Latuk план всегда одного запроса и выполняется он же всегда один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 17:14 |
|
||
|
Процедура с параметром.
|
|||
|---|---|---|---|
|
#18+
Просто не так понял:) Ну я уже и написал, и когда Павлу писал - именно это и имел в виду, что при таком подходе необходимо использовать не мой вариант. Другой вопрос, что план выполнения и перекомпиляция процедуры разные вещи:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 17:21 |
|
||
|
Процедура с параметром.
|
|||
|---|---|---|---|
|
#18+
CREATE PROCEDURE [dbo].[MyProcedure](@p_id_otdel int = NULL) AS SELECT * FROM T_arm WHERE @p_id_otdel IS NULL OR Id_otdel=@p_id_otdel Ecли на T-SQL то получаем преимущества: 1)Не теряем возможности иметь 0-й отдел 2)не надо вводить глупый 0 (просто сразу жмеш Enter)если хочеш получить список всех отделов 3)Когда в выражении OR выполняется первое условие второе уже не просчитывается 4)Оптимизатор прочухивает априорное условие и WERE на мозги практически не давит 5)Не теряем возможности править источник из конструктора но чел судя по всему про MDB спрашивал. "p_id_otdel - параметр." (я тут @ не наблюдаю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2003, 18:04 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1719&tid=1678188]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 416ms |

| 0 / 0 |
