powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Видимость таблиц другой схемы
12 сообщений из 12, страница 1 из 1
Видимость таблиц другой схемы
    #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
Видимость таблиц другой схемы
    #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
Видимость таблиц другой схемы
    #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
Видимость таблиц другой схемы
    #39344757
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
megajackСообщения об ошибке нет, просто первая часть уходит в exception

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

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

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

Схема текущего юзера (simpleuser), явным образом не меняется нигде.
...
Рейтинг: 0 / 0
Видимость таблиц другой схемы
    #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
Видимость таблиц другой схемы
    #39344956
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процедура часом не создана как AUTHID CURRENT_USER?
...
Рейтинг: 0 / 0
Видимость таблиц другой схемы
    #39345011
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
megajack
Код: plsql
1.
2.
3.
4.
  exception
    when OTHERS then
      iCOUNT := 0;
  end;

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

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


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