Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Видимость таблиц другой схемы / 12 сообщений из 12, страница 1 из 1
09.11.2016, 16:16
    #39344328
megajack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимость таблиц другой схемы
Всем доброго дня!

Есть база Oracle. Есть два пользователя - главный appuser (в схеме которого находятся все объекты приложения) и simpleuser - просто пользователь, который работает с приложением.

Есть две таблицы, appuser.table1 и appuser.table2.
Есть хранимая процедура appuser.myproc, в которой в двух отдельных динамических sql-блоках происходит Select из этих таблиц. Блоки упрощенно такие: "select * from table1"

Юзер simpleuser вызывает процедуру appuser.myproc.
Один селект происходит благополучно (без явного указания схемы, в которой хранится table1), а второй не работает, требует, чтобы схема была явно указана (то есть select * from appuser.table2).

Синонимов на таблицы нет. Гранты одинаковые.
В чем может быть проблема, куда копать?

Спасибо!
...
Рейтинг: 0 / 0
09.11.2016, 16:28
    #39344338
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимость таблиц другой схемы
megajackВсем доброго дня!

Есть база Oracle. Есть два пользователя - главный appuser (в схеме которого находятся все объекты приложения) и simpleuser - просто пользователь, который работает с приложением.

Есть две таблицы, appuser.table1 и appuser.table2.
Есть хранимая процедура appuser.myproc, в которой в двух отдельных динамических sql-блоках происходит Select из этих таблиц. Блоки упрощенно такие: "select * from table1"

Юзер simpleuser вызывает процедуру appuser.myproc.
Один селект происходит благополучно (без явного указания схемы, в которой хранится table1), а второй не работает, требует, чтобы схема была явно указана (то есть select * from appuser.table2).

Синонимов на таблицы нет. Гранты одинаковые.
В чем может быть проблема, куда копать?

Спасибо!
Приведите текст хранимой процедуры (фрагмента процедуры)
и точный текст сообщения об ошибке.
...
Рейтинг: 0 / 0
10.11.2016, 12:52
    #39344750
megajack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимость таблиц другой схемы
День добрый!

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
  sSQL := '
          SELECT COUNT(*)
            FROM DUAL
            WHERE EXISTS
                  (
                    SELECT NULL
                      FROM appuser.table1
                  )
          ';
  begin
    execute immediate sSQL
      into iCOUNT
  exception
    when OTHERS then
      iCOUNT := 0;
  end;
  if ( iCOUNT > 0 ) then
    iRESULT := iRESULT + 128;
  end if;


  sSQL := '
          SELECT COUNT(*)
            FROM DUAL
            WHERE EXISTS
                  (
                    SELECT NULL
                      FROM table2
                  )
          ';
  begin
    execute immediate sSQL
      into iCOUNT
  exception
    when OTHERS then
      iCOUNT := 0;
  end;
  if ( iCOUNT > 0 ) then
    iRESULT := iRESULT + 256;
  end if;




Сообщения об ошибке нет, просто первая часть уходит в exception, если не указать схему таблицы. Процедура принадлежит той же схеме, вызывается из-под другого юзера с помощью публичного синонима. На таблицы синонимов нет.
...
Рейтинг: 0 / 0
10.11.2016, 12:56
    #39344757
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимость таблиц другой схемы
megajackСообщения об ошибке нет, просто первая часть уходит в exception

Ошибки нет, но ошибка есть. Парадокс.
...
Рейтинг: 0 / 0
10.11.2016, 13:17
    #39344780
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимость таблиц другой схемы
megajack,

current_schema ?
...
Рейтинг: 0 / 0
10.11.2016, 13:27
    #39344791
Глупый Телевизор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимость таблиц другой схемы
orawish,

Можно попросить ответить тут 19866677 , если вспомните?
...
Рейтинг: 0 / 0
10.11.2016, 14:20
    #39344858
megajack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимость таблиц другой схемы
orawish,

Схема текущего юзера (simpleuser), явным образом не меняется нигде.
...
Рейтинг: 0 / 0
10.11.2016, 14:41
    #39344887
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимость таблиц другой схемы
megajack,

Первый селект проходит благополучно, потому что явно указана схема!

when OTHERS then - удалите и покажите ошибки

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
    -- Этот "Один" селект происходит благополучно 
    -- (без явного указания схемы, в которой хранится table1) ?!
    sSQL := '
          SELECT COUNT(*)
            FROM DUAL
            WHERE EXISTS
                  (
                    SELECT NULL
                      FROM appuser.table1
                  )
          ';
  begin
    execute immediate sSQL
      into iCOUNT
  exception
    when OTHERS then
      iCOUNT := 0;
  end;
  if ( iCOUNT > 0 ) then
    iRESULT := iRESULT + 128;
  end if;

  -- а второй не работает, требует, 
  -- чтобы схема была явно указана 
  -- (то есть select * from appuser.table2).
  sSQL := '
          SELECT COUNT(*)
            FROM DUAL
            WHERE EXISTS
                  (
                    SELECT NULL
                      FROM table2
                  )
          ';
  begin
    execute immediate sSQL
      into iCOUNT
  exception
    when OTHERS then
      iCOUNT := 0;
  end;
  if ( iCOUNT > 0 ) then
    iRESULT := iRESULT + 256;
  end if;
...
Рейтинг: 0 / 0
10.11.2016, 15:18
    #39344956
MazoHist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимость таблиц другой схемы
Процедура часом не создана как AUTHID CURRENT_USER?
...
Рейтинг: 0 / 0
10.11.2016, 15:52
    #39345011
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимость таблиц другой схемы
megajack
Код: plsql
1.
2.
3.
4.
  exception
    when OTHERS then
      iCOUNT := 0;
  end;

Быдлокод. Сперва спрячут ошибку, а потом спрашивают на форумах, почему не работает. Убери быдлокод - и узнаешь.
...
Рейтинг: 0 / 0
17.11.2016, 16:58
    #39349293
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимость таблиц другой схемы
Elicmegajack
Код: plsql
1.
2.
3.
4.
  exception
    when OTHERS then
      iCOUNT := 0;
  end;

Быдлокод. Сперва спрячут ошибку, а потом спрашивают на форумах, почему не работает. Убери быдлокод - и узнаешь.
megajack,
Убрал?
Узнал?
Понял?
...
Рейтинг: 0 / 0
17.11.2016, 17:18
    #39349313
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Видимость таблиц другой схемы
Что ж вы так за него волнуетесь?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Видимость таблиц другой схемы / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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