powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / И ещё раз про роли...
25 сообщений из 34, страница 1 из 2
И ещё раз про роли...
    #38605113
Фотография descent52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, доброго Всем времени суток!
Вкратце о проблеме, упрощенно и чтобы всем понятно было.

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


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


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

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

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

без текста ХП вряд ли кто ответит. Если конечно у них не супермощный новейший хрустальный шар появился
...
Рейтинг: 0 / 0
И ещё раз про роли...
    #38605155
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, роли и права тут совершенно ни при чём. При проблемах с правами было бы однозначное сообщение об ошибке про отсутствие прав на тот или иной объект.
...
Рейтинг: 0 / 0
И ещё раз про роли...
    #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
И ещё раз про роли...
    #38605194
Фотография descent52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... не не правильных...
...
Рейтинг: 0 / 0
И ещё раз про роли...
    #38605212
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
descent52,

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

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

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

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

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

А чего не into :CHA_xyz (с двоеточием)?
...
Рейтинг: 0 / 0
И ещё раз про роли...
    #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
И ещё раз про роли...
    #38605253
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
descent52DarkMaster, а into это переменные, чего тут странного то? )))

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

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

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

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

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

прекащай скриншоты без необходимости выкладывать. В IBE есть такая закладка как DDL (скрипт). Для выкладывания структуры таблицы достаточно скопировать текст с этой закладки
...
Рейтинг: 0 / 0
И ещё раз про роли...
    #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
И ещё раз про роли...
    #38605307
Фотография descent52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, как скажете, сэээээээээр )))
...
Рейтинг: 0 / 0
И ещё раз про роли...
    #38605319
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
descent52,

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

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

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


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