CftClub.ru
Клуб специалистов ЦФТ-Банк

Запрос выдает пустоту при имеющихся данных

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
SilverRoon
Участник


Вступление в Клуб: 19.02.2018
СообщениеПн Фев 26, 2018 14:31   Запрос выдает пустоту при имеющихся данных Ответить с цитатой
Полезность: Нет оценки
Здравствуйте. Подскажите, пожалуйста, почему у меня запрос SELECT * FROM IBS.VW_CRIT_CRED_OUTBAL WHERE ROWNUM <2 не возвращает данных, хотя через интерфейс я вижу, что данные есть. IBS.EXECUTUR.LOCK_OPEN я сделала, а также установила значения контекстные переменных IBS.EXECUTOR.SET_CONTEXT('P_DATE',... А также P_BRANCH и P_DEPARTCODE. Что я делаю не так?
P.S. Поиск по форуму использовала, но решить свою проблему всё равно не смогла
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПн Фев 26, 2018 16:04    Ответить с цитатой
Полезность: Нет оценки
тут смотрели ?

http://cftclub.ru/viewtopic.php?t=4815&postdays=0&postorder=asc&highlight=SET_CONTEXT&start=15


vtar пишет:
у меня так получилось - в Developere


Код:

begin
  dbms_output.put_line(rtl.open); 
  ibs.user_context.set_attribute('VW_CRIT_DOG_TO_CLOSE_DATE', '27/04/2018');
end;


после этого
select sys_context('IBS_USER','VW_CRIT_DOG_TO_CLOSE_DATE' ) from dual;

вычитывает значение атрибута, то есть и в вьюхе он должен отработать

select * from ibs.vw_crit_dog_to_close
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеВт Фев 27, 2018 06:43   Re: Запрос выдает пустоту при имеющихся данных Ответить с цитатой
Полезность: Нет оценки
SilverRoon пишет:
Здравствуйте. Подскажите, пожалуйста, почему у меня запрос SELECT * FROM IBS.VW_CRIT_CRED_OUTBAL WHERE ROWNUM <2 не возвращает данных, хотя через интерфейс я вижу, что данные есть. IBS.EXECUTUR.LOCK_OPEN я сделала, а также установила значения контекстные переменных IBS.EXECUTOR.SET_CONTEXT('P_DATE',... А также P_BRANCH и P_DEPARTCODE. Что я делаю не так?
P.S. Поиск по форуму использовала, но решить свою проблему всё равно не смогла


Помимо контекстных переменных в запросе есть ещё проверка прав доступа.
Попробуйте "выдернуть" эту часть из текста представления и проверить, выдан ли Вам доступ.
А что это за представление? Я его не нашла.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Фев 27, 2018 10:27   Re: Запрос выдает пустоту при имеющихся данных Ответить с цитатой
Полезность: Нет оценки
Эмиралька пишет:


Помимо контекстных переменных в запросе есть ещё проверка прав доступа.
Попробуйте "выдернуть" эту часть из текста представления и проверить, выдан ли Вам доступ.


как вариант, можно в свойствах представления проставить
флаги "не использовать контекст доступа"
"не проверять доступ к массивам"
"Проверка доступа" = НЕТ
и перекомпилировать. Если после этого запрос вернет данные, то проблема в правах.
SilverRoon
Участник


Вступление в Клуб: 19.02.2018
СообщениеВт Фев 27, 2018 13:26    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
тут смотрели ?

http://cftclub.ru/viewtopic.php?t=4815&postdays=0&postorder=asc&highlight=SET_CONTEXT&start=15


vtar пишет:
у меня так получилось - в Developere


Код:

begin
  dbms_output.put_line(rtl.open); 
  ibs.user_context.set_attribute('VW_CRIT_DOG_TO_CLOSE_DATE', '27/04/2018');
end;


после этого
select sys_context('IBS_USER','VW_CRIT_DOG_TO_CLOSE_DATE' ) from dual;

вычитывает значение атрибута, то есть и в вьюхе он должен отработать

select * from ibs.vw_crit_dog_to_close


Да, я тут смотрела. Вынесла для себя оттуда то, что моя проблема может быть в том, что контекстные переменные таки не установились. Сделала select sys_context и вижу, что там занесенные мною значения. Больше не знала, что ещё попробовать. У меня есть другой запрос, там имена представления и переменных другие и он работает. А именно к этому представлению нет.
SilverRoon
Участник


Вступление в Клуб: 19.02.2018
СообщениеВт Фев 27, 2018 13:29   Re: Запрос выдает пустоту при имеющихся данных Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Эмиралька пишет:


Помимо контекстных переменных в запросе есть ещё проверка прав доступа.
Попробуйте "выдернуть" эту часть из текста представления и проверить, выдан ли Вам доступ.


как вариант, можно в свойствах представления проставить
флаги "не использовать контекст доступа"
"не проверять доступ к массивам"
"Проверка доступа" = НЕТ
и перекомпилировать. Если после этого запрос вернет данные, то проблема в правах.


Не могу ничего такого, у меня есть доступ только делать селект к представлениям и прочитать текст представления.
SilverRoon
Участник


Вступление в Клуб: 19.02.2018
СообщениеВт Фев 27, 2018 14:22   Re: Запрос выдает пустоту при имеющихся данных Ответить с цитатой
Полезность: Нет оценки
Эмиралька пишет:
SilverRoon пишет:
Здравствуйте. Подскажите, пожалуйста, почему у меня запрос SELECT * FROM IBS.VW_CRIT_CRED_OUTBAL WHERE ROWNUM <2 не возвращает данных, хотя через интерфейс я вижу, что данные есть. IBS.EXECUTUR.LOCK_OPEN я сделала, а также установила значения контекстные переменных IBS.EXECUTOR.SET_CONTEXT('P_DATE',... А также P_BRANCH и P_DEPARTCODE. Что я делаю не так?
P.S. Поиск по форуму использовала, но решить свою проблему всё равно не смогла


Помимо контекстных переменных в запросе есть ещё проверка прав доступа.
Попробуйте "выдернуть" эту часть из текста представления и проверить, выдан ли Вам доступ.
А что это за представление? Я его не нашла.


Это в кредитах что-то про внебалансовые счета.
Скажите, а если я от имени одного и того же пользователя в инефейсе вижу эти данные, а через запрос в Sql developer нет, то это всё равно в правах может бы дело?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеЧт Мар 01, 2018 11:55   Re: Запрос выдает пустоту при имеющихся данных Ответить с цитатой
Полезность: Нет оценки
SilverRoon пишет:

Не могу ничего такого, у меня есть доступ только делать селект к представлениям и прочитать текст представления.


значит выставляй мотивированную претензию тому кто тебе поставил эту задачу или заявку на сервис-деск со скриншотами АРМ навигатор (есть данные), select нет данных.

У тебя нет возможности самостоятельно решить эту проблему.
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеПн Мар 05, 2018 07:24   Re: Запрос выдает пустоту при имеющихся данных Ответить с цитатой
Полезность: 1
SilverRoon пишет:
Эмиралька пишет:
SilverRoon пишет:
Здравствуйте. Подскажите, пожалуйста, почему у меня запрос SELECT * FROM IBS.VW_CRIT_CRED_OUTBAL WHERE ROWNUM <2 не возвращает данных, хотя через интерфейс я вижу, что данные есть. IBS.EXECUTUR.LOCK_OPEN я сделала, а также установила значения контекстные переменных IBS.EXECUTOR.SET_CONTEXT('P_DATE',... А также P_BRANCH и P_DEPARTCODE. Что я делаю не так?
P.S. Поиск по форуму использовала, но решить свою проблему всё равно не смогла


Помимо контекстных переменных в запросе есть ещё проверка прав доступа.
Попробуйте "выдернуть" эту часть из текста представления и проверить, выдан ли Вам доступ.
А что это за представление? Я его не нашла.


Это в кредитах что-то про внебалансовые счета.
Скажите, а если я от имени одного и того же пользователя в инефейсе вижу эти данные, а через запрос в Sql developer нет, то это всё равно в правах может бы дело?

Есть три места, в которых может быть затык.
1. нужно зарегистрировать сессию через выполнением запроса.
2. нужно иметь доступ к представлению и данным представления
Для того, чтобы проконтролировать эти два момента, рекомендую сделать копию представления с заранее заданными датой, маской и что там ещё используется. Можно также поставить ограничение на количество строк, потому что представление вами будет использоваться не для работы, а для проверки. И попробовать выполнить запрос из копии. Если данные будут получены, то проблема с правами или регистрацией сессии неактуальна.

3. не все переменные контекста для представления заполнены. В копии по одному восстанавливайте чтение контекста вместо предустановленных параметров, как это сделано в исходном представлении до тех пор, пока копия не будет его изначальной копией. Итеративно проверяйте наличие данных в запросе из SQL Dev.

Если Вам не хватает прав для этого эксперимента, то либо выбивайте права для себя, либо свалите эту работу на DBA.

Возможно, как-то поможет нижеследующий запрос:
Код:
select
   se.subj_id   "Пользователь с правами"
,   SYS_CONTEXT('IBS_SYSTEM','OSUSER')   "Это я"
,   SYS_CONTEXT('IBS_SYSTEM','ADMIN') "Админ?"
,   SYS_CONTEXT('IBS_USER','PARAM1')   "Параметр1"
FROM ibs.Criteria_Rights M_R, ibs.Subj_Equal SE
where   M_R.obj_id = (select id from ibs.criteria where short_name = 'VW_CRIT_CRED_OUTBAL')
AND M_R.Subj_Id=SE.Equal_Id
;
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru