Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / И ещё раз про роли... / 25 сообщений из 34, страница 1 из 2
04.04.2014, 10:03:32
    #38605113
descent52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
Народ, доброго Всем времени суток!
Вкратце о проблеме, упрощенно и чтобы всем понятно было.

На Interbase 6.5 крутится у меня одна процедурка. Назовем ее procedure_1_2014. На нее распространяются следующие права:
пользователю sysdba - execute
ролям тоже execute
Вот картинка из IBExpert'а


В этой процедурке, она там на несколько десятков листов, потому как она расчётами занимается, происходит выборка данных из одной таблички - table_1. На эту табличку распространяются тоже права, на картинке тоже вроде как понятно. Вот картинка из IBExpert'а


Все пользователи прописаны в ролях, т.е. они доступа к таблицам они не имеют, только на уровне прав роли.

И вот тут происходит непонятное, когда пользователь из программы запускает процедурку procedure_1_2014, т.е. тупо нажимает на кнопочку, то она производит неправильный расчёт. Но стоит запустить эту же процедурку второй раз, то расчёт происходит правильно. И все дальнейшие запуски этой процедуры дают правильный результат.
Эта процедура создается автоматически из программы, при переходе на новый месяц. И висит без дела, ее никто не запускает в течении месяца. И вот в конце месяца, когда надо выполнить расчет, то ее и запускают. И первый запуск дает неверные результаты.
Вот у меня и вопрос - куда смотреть и что делать? И пошагово я ее запускал - все прекрасно, все считает, но самый первый запуск и ... (((
...
Рейтинг: 0 / 0
04.04.2014, 10:12:10
    #38605120
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
descent52,

причём тут роли и вообще права на процедуру?
вместо бесполезных картинок лучше бы код своей процедуры привёл, а так же описал чего на должна делать
...
Рейтинг: 0 / 0
04.04.2014, 10:31:16
    #38605137
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
descent52Вот у меня и вопрос - куда смотреть и что делать?
Ну уж точно не на роли.
...
Рейтинг: 0 / 0
04.04.2014, 10:34:59
    #38605142
descent52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
wadman, тогда вопрос, почему, если захожу под пользователем SYSDBA и нажимаю на кнопочку, то расчёт происходит сразу верно и с первого раза? Это я, кстати, забыл упомянуть (
...
Рейтинг: 0 / 0
04.04.2014, 10:40:14
    #38605150
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
descent52,

без текста ХП вряд ли кто ответит. Если конечно у них не супермощный новейший хрустальный шар появился
...
Рейтинг: 0 / 0
04.04.2014, 10:43:52
    #38605155
o_v_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
Да, роли и права тут совершенно ни при чём. При проблемах с правами было бы однозначное сообщение об ошибке про отсутствие прав на тот или иной объект.
...
Рейтинг: 0 / 0
04.04.2014, 11:13:52
    #38605190
descent52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
Симонов Денис, да там 10-ки страниц, какой смысл разбираться в чужом хамнокоде? )))
Перед расчётом, есть select из table_1. Про нее я и писал. И вот расчет идет направльный из этих первоначально выбранных данных из этого select.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
  select CHAS_1, CHAS_2, CHAS_3, CHAS_4, CHAS_5, CHAS_6, CHAS_7, CHAS_8, CHAS_9, CHAS_10, CHAS_11, CHAS_12, CHAS_13,
         CHAS_14, CHAS_15, CHAS_16, CHAS_17, CHAS_18, CHAS_19, CHAS_20, CHAS_21, CHAS_22, CHAS_23, CHAS_24
  from CHAS_NAGR_2014
  where MOONTH = 3 and
        (CHAS_1+CHAS_2+CHAS_3+CHAS_4+CHAS_5+CHAS_6+CHAS_7+CHAS_8+CHAS_9+CHAS_10+CHAS_11+CHAS_12+CHAS_13+CHAS_14+CHAS_15+CHAS_16+CHAS_17+CHAS_18+CHAS_19+CHAS_20+CHAS_21+CHAS_22+CHAS_23+CHAS_24) > 0
  group by CHAS_1, CHAS_2, CHAS_3, CHAS_4, CHAS_5, CHAS_6, CHAS_7, CHAS_8, CHAS_9, CHAS_10, CHAS_11, CHAS_12, CHAS_13, CHAS_14, CHAS_15, CHAS_16, CHAS_17, CHAS_18, CHAS_19, CHAS_20, CHAS_21, CHAS_22, CHAS_23, CHAS_24, MOONTH
  into CHAS_1, CHAS_2, CHAS_3, CHAS_4, CHAS_5, CHAS_6, CHAS_7, CHAS_8, CHAS_9, CHAS_10, CHAS_11, CHAS_12, CHAS_13,
       CHAS_14, CHAS_15, CHAS_16, CHAS_17, CHAS_18, CHAS_19, CHAS_20, CHAS_21, CHAS_22, CHAS_23, CHAS_24;
...
Рейтинг: 0 / 0
04.04.2014, 11:15:13
    #38605194
descent52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
... не не правильных...
...
Рейтинг: 0 / 0
04.04.2014, 11:28:38
    #38605212
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
descent52,

Запрос бредовый.
Если делается MOONTH = 3, то MOONTH в GROUP BY не нужно.

Что такое CHAS_NAGR_2014
1) таблица
2) представление
3) ХП

Если 1, то неплохо бы подумать надо нормализацией структуры

Для 2, 3 надо смотреть что там внутри
...
Рейтинг: 0 / 0
04.04.2014, 11:31:27
    #38605216
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
descent52,

Какой-то странный у тебя INTO...

А чего не into :CHA_xyz (с двоеточием)?
...
Рейтинг: 0 / 0
04.04.2014, 11:51:44
    #38605245
descent52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
Да ладно Вам, бредовый, не бредовый. )))
Есть табличка CHAS_NAGR_2014 (она же в описании как table_1).
В ней, грубо говоря, 24 поля, где поле есть час в дне. Т.е. CHAS_1 это час суток от 0 до 1, CHAS_2 это час чуток от 1 до 2...CHAS_24 это час от 23 до 24 часов. В этих часах стоят либо 0 либо 1, в зависимости от необходимости. Если кому то ооооочень интересно, то в этой таблице хранятся часы пиковой нагрузки потребления мощности в месяцах.

По строкам хранятся дни. Так для марта будет 31 строка с 24 значениям. Этим запросом я вывожу строку с 24 значениями, где есть 0-ли и 1-цы. А дальше, в зависимости от значения поля CHAS_Х идет расчёт.

DarkMaster, а into это переменные, чего тут странного то? )))
...
Рейтинг: 0 / 0
04.04.2014, 11:56:46
    #38605253
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
descent52DarkMaster, а into это переменные, чего тут странного то? )))

Мне отсутствие ":" перед переменными в INTO режет глаз.
...
Рейтинг: 0 / 0
04.04.2014, 12:04:42
    #38605263
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
descent52,

если нет агрегатов и дублибликатов, то зачем GROUP BY?
...
Рейтинг: 0 / 0
04.04.2014, 12:17:29
    #38605282
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
Симонов Денисdescent52,

если нет агрегатов и дублибликатов, то зачем GROUP BY?+1
гроуп бай не нужен
descent52а into это переменные, чего тут странного то? )))глупая привычка использовать имена переменных совпадающие с именами столбцов, не очень читабельно, а : немного упрощает читабельность.

что касается неправильности, неплохо озвучить процесс заполнения таблицы и пересмотреть код процедуры на наличие возможных изменений в таблице.
...
Рейтинг: 0 / 0
04.04.2014, 12:19:20
    #38605286
descent52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
Симонов Денис, вот ты дотошный то ))) уважаю!
Как я объяснял выше, столбцов 24, это часы в месяц, но в месяце есть еще и дни. В марте их от 1 до 31. Так вот, для каждого дня марта, т.е. для каждой строки (это день) стоят значения в столбцах CHAS_1...CHAS_24. Но дни бывают рабочими и выходными. В выходные дни все CHAS_Х заполнены 0. Своим же запросом я вывожу те дни, где сумма всех CHAS_Х не равна 0. И получаю, ну пусть 20 строк, это есть рабочие дни, где некоторые CHAS_Х отличны от 0. Это и есть пиковые часы. А group by я получаю единственную строку с пиковыми часами, потому что они все едины для каждого дня месяца.

И вывожу в переменные, которые используются внутри этой же процедуры. А если внутри процедуры я объявил переменные, которые только в ней и нужны, то : перед ними, вроде как и не нужны, это же не выходной параметр для программы. Или тут я ступил?
...
Рейтинг: 0 / 0
04.04.2014, 12:21:45
    #38605290
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
descent52А group by я получаю единственную строку с пиковыми часами, потому что они все едины для каждого дня месяца.ух ты...
прикольно.
...
Рейтинг: 0 / 0
04.04.2014, 12:22:53
    #38605294
descent52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
вот структура таблички
...
Рейтинг: 0 / 0
04.04.2014, 12:24:47
    #38605297
descent52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
Египетская улица, будете проходить мимо - проходите...
...
Рейтинг: 0 / 0
04.04.2014, 12:26:40
    #38605300
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
descent52,

прекащай скриншоты без необходимости выкладывать. В IBE есть такая закладка как DDL (скрипт). Для выкладывания структуры таблицы достаточно скопировать текст с этой закладки
...
Рейтинг: 0 / 0
04.04.2014, 12:29:14
    #38605305
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
descent52Египетская улица, будете проходить мимо - проходите...я искренне удивился, честное слово.
ЗЫ впрочем как я понял Ваш замысел, я бы сделал так
Код: sql
1.
2.
3.
4.
select max(CHAS_1), max(CHAS_2), ... max(CHAS_23), max(CHAS_24)
  from CHAS_NAGR_2014
  where MOONTH = 3
  into CHAS_1, CHAS_2, ... CHAS_23, CHAS_24;

ибо глубинный смысл отсечения выходных с нулями мне непонятен, если в результате у нас одна единственная строка
...
Рейтинг: 0 / 0
04.04.2014, 12:29:50
    #38605307
descent52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
Симонов Денис, как скажете, сэээээээээр )))
...
Рейтинг: 0 / 0
04.04.2014, 12:33:23
    #38605319
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
descent52,

ну так логика заполнения таблицы будет рассказана?
или это секретная информация?
...
Рейтинг: 0 / 0
04.04.2014, 12:34:15
    #38605323
descent52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
roadster, ну, давай, счас попробую, ведь недолго тут делов то ))
...
Рейтинг: 0 / 0
04.04.2014, 12:52:40
    #38605359
descent52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
roadsterdescent52,

ну так логика заполнения таблицы будет рассказана?
Какая логика заполнения? чего то не пойму.

И про запрос, спасибо за оптимизацию, но результат тот же.
Парни, я вот чего не пойму - ну была бы где то ошибка, эта ошибка вылазила и в первый раз при расчёте и во второй раз и в третий. Но фишка в том, что запуск одной и той же процедуры со второго раза всегда даёт только верные результаты. Ну неверно запрос бы работал, но он бы неверно работал бы всегда. Неверно работает запрос со ставкой новых данных, то и во второй раз бы он глючил. А тут только самый самый первый раз запуска глючит. И глюк второй месяц такой...
...
Рейтинг: 0 / 0
04.04.2014, 12:56:18
    #38605367
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И ещё раз про роли...
descent52Какая логика заполнения? чего то не пойму.когда заполняется таблица, в какой момент.
единственное, что приходит в голову, что у СИСДБА есть права на что-то, на что нет у простого пользователя, но первый запуск процедуры простым пользователем вызывает по какому-то событию (триггеру например) обновление данных.
ЗЫ это если я правильно помню распределение ролей в FB.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / И ещё раз про роли... / 25 сообщений из 34, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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