[Oracle PL/SQL] Table or View does not exist

Odpowiedz Nowy wątek
2018-11-05 21:30
0

Mam pewien problem.

Posiadam dwoch uzytkownikow: TEST_OI i TEST_OI_ST

Na uzytkowniku TEST_OI_ST tworze package: PK o tresci:

create or replace PACKAGE                             "PK  AS 

PROCEDURE PR_1;
PROCEDURE PR_2;

END PK;

Nastepnie chce utworzyc package body:

create or replace PACKAGE BODY                                          "PK" AS

  PROCEDURE PR_1 AS
  BEGIN
              merge into **TEST_OI.T_SPR** x
            using (
code
) ;

             update **TEST_OBI.t_spr**
code 
end;
  update **TEST_OI.T_OS** code ;
  update **TEST_OI.T_OS2** code ; 

  END PR_1;

  PROCEDURE PR_2 AS
  BEGIN
     merge into **TEST_OI.T_D_P** a
                using(
code b
                    ) b
                 code;

END PK

Problem pojawia sie gdy kompiluje:

5,15    PL/SQL: SQL Statement ignored   ERROR
5,35    PL/SQL: ORA-00942: table or view does not exist ERROR

Tak jakby uzytkownik T_OI_ST nie widzial tabeli T_OI.T_SPR i wszystkich innych ze schematu T_OI.
Jednak jak zrobie na uzytkowniku T_OI_ST zapytanie, np:

select * from T_OI.T_SPR;

To zapytanie dziala poprawnie, rowniez dla innych tabel z tego uzytkownika moge podgladnac dane.
Gdzie jeszcze jest jakies security lub jak skompilowac lub sprawdzic czemu wyrzuca blad w packagebody ze nie widzi tabel?

Pozostało 580 znaków

2018-11-05 21:39
0

z tego kodu ciężko cokolwiek powiedzieć.


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2018-11-05 21:43
0
abrakadaber napisał(a):

z tego kodu ciężko cokolwiek powiedzieć.

W sumie rzecz polega na tym, ze tworzac procedure w package body na uzytkowniku TEST_OI_ST, ktora zawiera np. merge into TEST_OI.JAKAS_TABELA - zostaje mi wyrzucony blad ze table or view does no exist. I tyczy sie to wszystkich odwolan do tabel z inengo uzytkownika. Natomiast jak sprawdza poprzez select * from TEST_OI.JAKAS TABELA - to zawsze dostaje wyniki.

Pozostało 580 znaków

2018-11-05 21:51
0

jeśli nie miałbyś uprawnień (bo możesz nie mieć uprawnień do obiektów innego schematu) to byś dostał inny komunikat. Możesz spróbować utworzyć synonimy do obiektów w innym schemacie. Co do tego, że ciężko coś powiedzieć to chodziło mi o to, że Twój kod (a przynajmniej to co z niego zostało) nie zawiera błędu z formalnej strony a błąd może być całkiem gdzie indziej.


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2018-11-06 02:45
0
abrakadaber napisał(a):

jeśli nie miałbyś uprawnień (bo możesz nie mieć uprawnień do obiektów innego schematu) to byś dostał inny komunikat.

No nie wiem czy inny. Ja dokładnie taki dostaję gdy używany przeze mnie użytkownik nie ma dostępu do tabeli czy widoku.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2018-11-06 07:48
0
  1. Weź sobie dobrze sprawdź nazwy schematów.
     merge into **TEST_OI.T_SPR** x
     update **TEST_OBI.t_spr**

TEST_OI vs TEST_OBI

  1. Zobacz jak masz uprawnienia nadane do tego drugiego schematu. Nie mogą być przez rolę, tylko muszą być bezpośrednio jak chcesz używać wewnątrz pakietu.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0