Страница 1 из 2
Имя поля, как параметр процедуры
Добавлено: 18 авг 2006, 14:11
Bocman
Помогите! Можно ли передать имя поля, как параметр процедуры, или записать запрос в varchar и выполнить. Использую InterBase 7.0. Пробовал сделать следующем образом:
FIELD_NAME = 'M1';
for execute statement 'Select '||FIELD_NAME||' from number'
into :FIELD
do
Не понимает execute
Добавлено: 18 авг 2006, 14:19
kdv
нельзя. в IB 7 вообще нет execute statement. И с чего вы решили, что он там есть.
Насчет самого вопроса - у вас проблемы в консерватории. ТАК пытаться делать не надо. Я бы вообще пользоваться execute statement разрешал только после сдачи теста на
http://course.ibase.ru.
http://course.ibase.ru/course/category.php?id=2
Добавлено: 18 авг 2006, 14:54
Bocman
А как же выйти из ситуации, у меня 24 поля и в зависимости от условия процедура выборка должна выбирать данные по одному из полей, а затем каждую запись обрабатывать
Добавлено: 18 авг 2006, 15:57
Dimitry Sibiryakov
Выбирай все 24, а потом обрабатывай по условию. Что, лень набрать 24 IFa?
Добавлено: 18 авг 2006, 16:10
Bocman
Конечно можно, но запрос достаточно большой, где то на страницу каждый, значит будет на 24 страницы. Хотелось бы упростить
Добавлено: 18 авг 2006, 17:34
kdv
Код: Выделить всё
Конечно можно, но запрос достаточно большой
уже подозрительно. 24 if-а и прочее навевают мысли о запросе, где месяц проверяется через if. только месяцев 12.
это еще один признак, что ты пишешь не то и не так.
Добавлено: 18 авг 2006, 17:48
Merlin
Зато в сутках 24 часа

Добавлено: 18 авг 2006, 17:57
hvlad
24 основных аккордов - 12 нот и минор\мажор

Септ- нон-аккорды и прочую хрень пока не рассматриваем

Добавлено: 18 авг 2006, 18:19
Bocman
В данном случае хранится определенная буква на каждый месяц за 2 года, нужно выбрать извесную букву на текущий или иной месяц
Добавлено: 18 авг 2006, 18:51
WildSery
А я уж подумал, что речь идёт про бутылки в ящике пива...

Не важно, о чём идёт речь, но описываемая конструкция слишком сложна, а значит, скорее всего, не имеет права на существование. Чуть больше информации о сути вопроса - и возьмусь помочь.
Добавлено: 18 авг 2006, 19:57
Bocman
В 24(план работ на 2 года) поля по средствам триггеров устанавливается вид производимой работы для экземпляра. Необходимо сделать отчет в котором указываются для группы экземпляров какие работы выполнились, не выполнелись, в каком состоянии и т.д. Главным критерием отбора кроме всего прочего является наличие в плане определенного вида работ, например буквы 'К'
Добавлено: 19 авг 2006, 11:54
Bocman
Да и еще в другом случае есть 12 полей int, каждое означает месяц, нужна сумма значений прошедших месяцев от текущего, например А1+А2... Пока я собрал запрос в приложении, а хотелось все сделать в процедуре
Добавлено: 19 авг 2006, 15:22
kdv
иди лучше читай книжки по проектированию БД.
Добавлено: 21 авг 2006, 08:23
Bocman
Я думаю БД у меня спроектированна правильно, и если бы я все знал, я бы делал и не у кого бы не спрашивал.
Добавлено: 21 авг 2006, 08:58
kdv
а я думаю, что спроектирована неправильно. хотя тоже всего не знаю. знать все невозможно...
Добавлено: 21 авг 2006, 10:24
WildSery
Bocman писал(а):В 24(план работ на 2 года) поля по средствам триггеров устанавливается вид производимой работы для экземпляра.
Судя по всему, запихал в одну таблицу данные, которые бы в двух таблицах хранить. Реляционной моделью тут не пахнет

Добавлено: 21 авг 2006, 10:25
Bocman
В таблице находятся все приборы, связана она с другими таблицами (наименование, местонахождение и тд) как многие к одному.
в этой таблице есть 24 поля, означающие план работ на 2 года, в них указывается какие работы и в каком мясяце проводились или будут проводится (К-калибровка, т-технический осмотр и тд) расположение букв зависит от месяца последней работы и интервала выполнения, а так же при каких либо переносах работ (все изменения плана производится в триггерах при помощи UDF). Все работает нормально, только не знаю как в процедуре выбрать все приборы, у которых запланированна или выполнена (буква после выполнения остается) на запрошенный месяц
Добавлено: 21 авг 2006, 10:27
Bocman
Если эту таблицу и разбивать, то только на один к одному, так как план для каждого прибора в отдельности
Добавлено: 21 авг 2006, 10:34
WildSery
Во блин. Тяжёлый случай. Читать проектирование БД, однозначно!
Я тут вижу три таблицы слитые в одну.
1. Перечень приборов
2. Перечень работ
3. План работ
Добавлено: 21 авг 2006, 10:34
kdv
а почему эти 24 поля не развернуты в таблицу ?