문제

저장된 절차 내에서 DBA_TAB_COLS보기에서 선택하려고합니다. 작동하지 않고 이유를 모르겠습니다.

다음 SQL을 쿼리로 실행하면 다음과 같습니다.

SELECT t.data_type FROM dba_tab_cols t
WHERE 
    t.table_name = 'ACCOUNTTYPE' AND 
    t.column_name = 'ACCESSEDBY';

잘 작동합니다. 그러나 저장된 절차로 복사하면 :

SELECT t.data_type INTO dataType FROM dba_tab_cols t
WHERE
    t.table_name = 'ACCOUNTTYPE' AND 
    t.column_name = 'ACCESSEDBY';

"PL/SQL : ORA-00942 : 테이블 또는 뷰가 존재하지 않는다"는 오류 메시지가 표시되고 편집자는 컴파일을 시도하는 동안 DBA_TAB_COL을 강조합니다. 두 경우 모두 동일한 DB 사용자가 사용되고 있습니다.

데이터 유형은 다음과 같이 선언됩니다 : Datatype varchar2 (128);

PL/SQL (Oracle 9)

누구든지 문제를 아는 사람이 있습니까?

도움이 되었습니까?

해결책

특권 문제 일 가능성이 높습니다. 액세스 권한입니다 dba_tab_columns 역할을 통해 또는 사용자에게 직접 선택한 보조금입니까? Sprocs에서는 역할을 통해 부여 된 특권은 없습니다.

Google의 간단한 모습은 사용을 제안합니다 all_tab_cols 대신 해당 테이블에 필요한 정보가 있는지 확인하십시오.

다른 팁

Eoin의 답변에 추가하려면 :

대부분의 사람들의 경우 사용자가 직접 선택 권한을 부여받지 못한 경우 (역할을 통해서는) 사용자가 절차 내에서 테이블을 선택할 수 없다는 것은 놀라운 일입니다.

테이블 사용자 가이 절차를 컴파일하려고한다면,이 테이블이 확실히 존재 하고이 테이블을 선택할 권리가 부여되었지만 ORA-00942를 얻습니다. 문제는 절차가 역할을 존중하지 않는다는 것입니다. 직접 부여 된 권리만이 존중됩니다. 따라서 테이블 소유자가 선택할 권리를 다시 한 번 다시 한번해야한다는 것을 의미합니다.

http://www.adp-gmbh.ch/ora/err/ora_00942.html

Oracle이 설치되어 있지 않지만 데이터 유형은 예약 된 단어 일 것입니다. 나는 다른 것을 시도 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top