|
|
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
Народ, доброго Всем времени суток! Вкратце о проблеме, упрощенно и чтобы всем понятно было. На Interbase 6.5 крутится у меня одна процедурка. Назовем ее procedure_1_2014. На нее распространяются следующие права: пользователю sysdba - execute ролям тоже execute Вот картинка из IBExpert'а В этой процедурке, она там на несколько десятков листов, потому как она расчётами занимается, происходит выборка данных из одной таблички - table_1. На эту табличку распространяются тоже права, на картинке тоже вроде как понятно. Вот картинка из IBExpert'а Все пользователи прописаны в ролях, т.е. они доступа к таблицам они не имеют, только на уровне прав роли. И вот тут происходит непонятное, когда пользователь из программы запускает процедурку procedure_1_2014, т.е. тупо нажимает на кнопочку, то она производит неправильный расчёт. Но стоит запустить эту же процедурку второй раз, то расчёт происходит правильно. И все дальнейшие запуски этой процедуры дают правильный результат. Эта процедура создается автоматически из программы, при переходе на новый месяц. И висит без дела, ее никто не запускает в течении месяца. И вот в конце месяца, когда надо выполнить расчет, то ее и запускают. И первый запуск дает неверные результаты. Вот у меня и вопрос - куда смотреть и что делать? И пошагово я ее запускал - все прекрасно, все считает, но самый первый запуск и ... ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 10:03:32 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
descent52, причём тут роли и вообще права на процедуру? вместо бесполезных картинок лучше бы код своей процедуры привёл, а так же описал чего на должна делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 10:12:10 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
descent52Вот у меня и вопрос - куда смотреть и что делать? Ну уж точно не на роли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 10:31:16 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
wadman, тогда вопрос, почему, если захожу под пользователем SYSDBA и нажимаю на кнопочку, то расчёт происходит сразу верно и с первого раза? Это я, кстати, забыл упомянуть ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 10:34:59 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
descent52, без текста ХП вряд ли кто ответит. Если конечно у них не супермощный новейший хрустальный шар появился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 10:40:14 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
Да, роли и права тут совершенно ни при чём. При проблемах с правами было бы однозначное сообщение об ошибке про отсутствие прав на тот или иной объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 10:43:52 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, да там 10-ки страниц, какой смысл разбираться в чужом хамнокоде? ))) Перед расчётом, есть select из table_1. Про нее я и писал. И вот расчет идет направльный из этих первоначально выбранных данных из этого select. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 11:13:52 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
... не не правильных... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 11:15:13 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
descent52, Запрос бредовый. Если делается MOONTH = 3, то MOONTH в GROUP BY не нужно. Что такое CHAS_NAGR_2014 1) таблица 2) представление 3) ХП Если 1, то неплохо бы подумать надо нормализацией структуры Для 2, 3 надо смотреть что там внутри ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 11:28:38 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
descent52, Какой-то странный у тебя INTO... А чего не into :CHA_xyz (с двоеточием)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 11:31:27 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
Да ладно Вам, бредовый, не бредовый. ))) Есть табличка 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 это переменные, чего тут странного то? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 11:51:44 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
descent52DarkMaster, а into это переменные, чего тут странного то? ))) Мне отсутствие ":" перед переменными в INTO режет глаз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 11:56:46 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
descent52, если нет агрегатов и дублибликатов, то зачем GROUP BY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 12:04:42 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
Симонов Денисdescent52, если нет агрегатов и дублибликатов, то зачем GROUP BY?+1 гроуп бай не нужен descent52а into это переменные, чего тут странного то? )))глупая привычка использовать имена переменных совпадающие с именами столбцов, не очень читабельно, а : немного упрощает читабельность. что касается неправильности, неплохо озвучить процесс заполнения таблицы и пересмотреть код процедуры на наличие возможных изменений в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 12:17:29 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, вот ты дотошный то ))) уважаю! Как я объяснял выше, столбцов 24, это часы в месяц, но в месяце есть еще и дни. В марте их от 1 до 31. Так вот, для каждого дня марта, т.е. для каждой строки (это день) стоят значения в столбцах CHAS_1...CHAS_24. Но дни бывают рабочими и выходными. В выходные дни все CHAS_Х заполнены 0. Своим же запросом я вывожу те дни, где сумма всех CHAS_Х не равна 0. И получаю, ну пусть 20 строк, это есть рабочие дни, где некоторые CHAS_Х отличны от 0. Это и есть пиковые часы. А group by я получаю единственную строку с пиковыми часами, потому что они все едины для каждого дня месяца. И вывожу в переменные, которые используются внутри этой же процедуры. А если внутри процедуры я объявил переменные, которые только в ней и нужны, то : перед ними, вроде как и не нужны, это же не выходной параметр для программы. Или тут я ступил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 12:19:20 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
descent52А group by я получаю единственную строку с пиковыми часами, потому что они все едины для каждого дня месяца.ух ты... прикольно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 12:21:45 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
Египетская улица, будете проходить мимо - проходите... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 12:24:47 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
descent52, прекащай скриншоты без необходимости выкладывать. В IBE есть такая закладка как DDL (скрипт). Для выкладывания структуры таблицы достаточно скопировать текст с этой закладки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 12:26:40 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
descent52Египетская улица, будете проходить мимо - проходите...я искренне удивился, честное слово. ЗЫ впрочем как я понял Ваш замысел, я бы сделал так Код: sql 1. 2. 3. 4. ибо глубинный смысл отсечения выходных с нулями мне непонятен, если в результате у нас одна единственная строка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 12:29:14 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, как скажете, сэээээээээр ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 12:29:50 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
descent52, ну так логика заполнения таблицы будет рассказана? или это секретная информация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 12:33:23 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
roadster, ну, давай, счас попробую, ведь недолго тут делов то )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 12:34:15 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
roadsterdescent52, ну так логика заполнения таблицы будет рассказана? Какая логика заполнения? чего то не пойму. И про запрос, спасибо за оптимизацию, но результат тот же. Парни, я вот чего не пойму - ну была бы где то ошибка, эта ошибка вылазила и в первый раз при расчёте и во второй раз и в третий. Но фишка в том, что запуск одной и той же процедуры со второго раза всегда даёт только верные результаты. Ну неверно запрос бы работал, но он бы неверно работал бы всегда. Неверно работает запрос со ставкой новых данных, то и во второй раз бы он глючил. А тут только самый самый первый раз запуска глючит. И глюк второй месяц такой... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 12:52:40 |
|
||
|
И ещё раз про роли...
|
|||
|---|---|---|---|
|
#18+
descent52Какая логика заполнения? чего то не пойму.когда заполняется таблица, в какой момент. единственное, что приходит в голову, что у СИСДБА есть права на что-то, на что нет у простого пользователя, но первый запуск процедуры простым пользователем вызывает по какому-то событию (триггеру например) обновление данных. ЗЫ это если я правильно помню распределение ролей в FB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 12:56:18 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=99&tid=1563745]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
281ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 607ms |

| 0 / 0 |
