![]() |
|
Модераторы: Akella |
![]()
|
|
| Akella |
|
||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
Приветствую всех!
в хранимой процедуре хочу использовать CASE но IBExpert ругается на begin
можно ли использовать такую конструкцию или нет? имею ввиду
ошибка вот такая:
Добавлено через 6 минут и 9 секунд Вообще что нужно? Есть в таблице 6 полей типа smallint (остальные не беру во внимание сейчас). Каждое поле - день недели: Пн, Вт, Ср, Чт, Пт, Сб. Пользователь в таблице ставит галки для каждой записи. Т.е. выбирает, что та запись идёт для Пн и Сб, дрйгая на все дни и т.д. Как определить текущий номер дня недели я знаю, а вот теперь нужно определить, ТО что запись соответствует сегодняшнему дню недели. КАК? Допустим, что сегодня понедельник. Берём запись, проверяем, что в поле Pn, если 1, то запись обрабатываем. В принцыпе всё готово, кроме определения записи к текущему дню недели. |
||||||
|
|||||||
| Deniz |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Формат case
В ХП лучше использовать for select, и внутри уже обрабатывать. Если нужен именно select, то можно найти UDF что-то типа IIF() или написать свою Можно еще подумать про хранение всех v_pn, v_vt, v_sr и т.д. в одном поле char(6) например '001011' - среда, пятн. и суббота Построить CURRENT_WEEK_DAY не проблема, для четверга '___1__' тогда запрос получится чуть легче.
Добавлено через 1 минуту и 37 секунд Кстати неплохо бы указать версию сервера Все что писал я справедливо для FireBird 1.5, для 2 не знаю не работаю. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
|
|||
|
||||
| TaNK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 669 Регистрация: 29.10.2006 Где: Краснодар Репутация: нет Всего: 1 |
В версии 2.0 и выше изменений не придвиделось по case, так что, верить Deniz'y! -------------------- Oracle 11.2.0.3.0 FireBird 1.0-2.5 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
я пошёл другим путём - создал 7 процедур, т.е. по процедуре на каждый день и там
Добавлено @ 12:10 а из приложения уже запускаю нужную Это сообщение отредактировал(а) Akella - 20.12.2007, 14:47 |
|||
|
||||
| Deniz |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
А можно еще вот так извратиться:
Это сообщение отредактировал(а) Deniz - 20.12.2007, 13:05 -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
Deniz, ну да, тока у меня нет поля, где хранится "1_1_1__" на понедельник, среду и тяпницу
пока один минус, если что-то в общей логике меняется, то нужно править 7 процедур :( |
|||
|
||||
| Deniz |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Итак:
Если нужно выбрать записи для нескольких дней, нужно определить, как передаются эти несколько дней. Или ты что-то недоговариваешь, или одно из трех ... -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
Deniz, спасибо, конечно, но мне это уже не нужно
всё равно за активную помощь +1 Добавлено через 45 секунд
мне не нужно несколько дней, ибо редакция отдаёт в печать информацию только за конкретный день. |
|||
|
||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |