[SQL] ORA-00942 : 테이블 또는 뷰 (때 별도의 SQL 작업을하지만, 오라클 함수 내에서 작업을하지 않는) 존재하지 않습니다
SQLORA-00942 : 테이블 또는 뷰 (때 별도의 SQL 작업을하지만, 오라클 함수 내에서 작업을하지 않는) 존재하지 않습니다
내가 표에서 선택 * 같은 SQL 문이있을 때, 그것은 잘 작동하지만, 최대한 빨리 함수에 넣어, 나는 얻을 :
ORA-00942: table or view does not exist
이 문제를 어떻게 해결?
해결법
-
==============================
1.당신이 볼 수있는 몇 가지가있다. 함수 소유자가 테이블 소유자는 다른 같은 질문을 바탕으로, 그것은 보인다.
당신이 볼 수있는 몇 가지가있다. 함수 소유자가 테이블 소유자는 다른 같은 질문을 바탕으로, 그것은 보인다.
1) 역할을 통해 부여 : 다른 사용자의 객체에 저장 프로 시저 및 함수를 만들려면이 역할을 통해 대신 액세스 개체 (에 직접 액세스 할 수 있어야합니다).
2)
당신이 스키마 A의 테이블 및 스키마 B에서 함수를 만든 경우 문제가 생길 수 있습니다 이해하는 오라클의 호출자 / 디파 권리 개념을 살펴해야한다.
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/subprograms.htm#LNPLS00809
-
==============================
2.표 1은 역할에 부여 된, 그리고 역할이 당신에게 부여 된로부터 권한을 선택할 수 있다는 강력한 가능성이있다. 역할에 부여 된 권한은 사용자가 역할이 부여 된 경우에도 사용자가 작성한 PL / SQL을 사용할 수 없습니다.
표 1은 역할에 부여 된, 그리고 역할이 당신에게 부여 된로부터 권한을 선택할 수 있다는 강력한 가능성이있다. 역할에 부여 된 권한은 사용자가 역할이 부여 된 경우에도 사용자가 작성한 PL / SQL을 사용할 수 없습니다.
당신은 SYS 소유의 개체에 대한 DBA 역할이 부여 된 사용자에 대해이 많은입니다를 참조하십시오. DBA의 역할이있는 사용자는, 말하자면, V $ SESSION SELECT * FROM 할 수 있지만 V $ SESSION SELECT * FROM을 포함하는 함수를 작성할 수 없습니다.
수정은 위의 경우, 예를 들어, 직접 사용자에게 해당 개체에 명시 적 권한을 부여하는 것입니다, SYS 사용자는 GRANT SELECT ON V_ $ SESSION TO 참고 MyUser에있다;
-
==============================
3.확인 함수는 테이블과 동일한 DB 스키마입니다.
확인 함수는 테이블과 동일한 DB 스키마입니다.
-
==============================
4.어느 u는 해당 스키마 / 테이블에 권한이 해달라고 또는 테이블이 존재 않습니다. 당신이 당신의 저장 프로 시저에서 다른 스키마 테이블을 사용하는 경우 대부분이 문제가 발생했습니다. 예. 당신은 사용자 / 스키마 ABC에서와 같은 PL / SQL에서 저장 프로 시저를 실행하는 경우 사용자 / 스키마 XYZ에서이다 테이블이 있습니다. 이 경우 ABC는 XYZ 테이블 GRANT 즉 권한이 있어야
어느 u는 해당 스키마 / 테이블에 권한이 해달라고 또는 테이블이 존재 않습니다. 당신이 당신의 저장 프로 시저에서 다른 스키마 테이블을 사용하는 경우 대부분이 문제가 발생했습니다. 예. 당신은 사용자 / 스키마 ABC에서와 같은 PL / SQL에서 저장 프로 시저를 실행하는 경우 사용자 / 스키마 XYZ에서이다 테이블이 있습니다. 이 경우 ABC는 XYZ 테이블 GRANT 즉 권한이 있어야
그랜트 모든 온으로 ABC;
Select * From Dba_Tab_Privs Where Owner = 'XYZ'and Table_Name = <Table_Name>;
-
==============================
5.아주 간단한 솔루션은 DB 이름 DBMS과 테이블 정보는 다음 어떤 쿼리에 대한 DBMS.info 될 것입니다 경우처럼 테이블 이름으로 데이터베이스 이름을 추가하는 것입니다.
아주 간단한 솔루션은 DB 이름 DBMS과 테이블 정보는 다음 어떤 쿼리에 대한 DBMS.info 될 것입니다 경우처럼 테이블 이름으로 데이터베이스 이름을 추가하는 것입니다.
쿼리 인 경우
select * from STUDENTREC where ROLL_NO=1;
이 오류가 표시 될 수 있지만,
select * from DBMS.STUDENTREC where ROLL_NO=1;
그것은 지금 실제로 표는 발견되지 않기 때문입니다.
from https://stackoverflow.com/questions/6669575/ora-00942-table-or-view-does-not-exist-works-when-a-separate-sql-but-does-not by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 더블 도트 테이블 규정 (0) | 2020.07.07 |
---|---|
[SQL] 나는 긴 쿼리의 실행을 중지하면, 롤백합니까? (0) | 2020.07.07 |
[SQL] PDO SQL 상태 "00000"하지만 여전히 오류? [복제] (0) | 2020.07.07 |
[SQL] #OR에 전달 관계는 구조적으로 호환되어야합니다. 호환 값 : : 참고 문헌] (0) | 2020.07.07 |
[SQL] MySQL의의에 SQL 서버 상당 EXPLAIN (0) | 2020.07.07 |