PLS-00302가 표시되는 이유: 구성 요소가 있을 때 선언되어야 합니까?
Oracle 10.2를 사용하고 있습니다.
일부 Oracle 개체를 한 스키마(S1)에서 다른 스키마(S2)로 이동하기 위해 일부 스크립트에서 작업하고 있습니다.저는 DBA 역할로 기능을 만들고 있습니다.이동하면 제 기능 중 하나가 무효가 되는데, 왜 그런지 모르겠어요.코드는 다음과 같습니다.
MY_FUNC
CREATE OR REPLACE FUNCTION S2."MY_FUNC" RETURN VARCHAR2 IS
something VARCHAR2;
othervar VARCHAR2 (50):= 'TEST';
BEGIN
something := S2.MY_FUNC2();
/*some code*/
return othervar;
END;
/
사용할 경우MY_FUNC2
스키마가 없으면 작동합니다.
something := MY_FUNC2();
대신에
My_FUNC2
CREATE OR REPLACE FUNCTION S2."MY_FUNC2" RETURN VARCHAR2 IS
something BOOLEAN;
othervar VARCHAR2 (50) := 'TEST2';
BEGIN
/*some code*/
return othervar;
END;
/
MY_FUNC2에는 다음과 같은 동의어가 있습니다.
CREATE OR REPLACE PUBLIC SYNONYM "MY_FUNC2" FOR "S2"."MY_FUNC2"
MY_FUNC
오류가 있는 컴파일:
PLS-00302: 'MY_FUNC2' 구성 요소를 선언해야 합니다.
내 함수가 다른 스키마에 있을 때(S1) 정확히 같은 구조를 가지고 있었고 동의어가 정확히 동일하게 생성되었을 때(그러나 S1을 가리키고 있음) 왜 이 오류가 발생하는지 이해할 수 없습니다.MY_FUNC
잘 짜여진
저는 원래 이 함수와 동의어를 만들지 않았습니다.S2에서 일부 권한이 누락되었을 수 있습니다.MY_FUNC
제대로 작동할 수 있습니까?
스키마와 이름이 같은 개체가 있으면 해당 오류가 발생할 수 있습니다.예:
create sequence s2;
begin
s2.a;
end;
/
ORA-06550: line 2, column 6:
PLS-00302: component 'A' must be declared
ORA-06550: line 2, column 3:
PL/SQL: Statement ignored
을 참조할 때S2.MY_FUNC2
개체 이름을 확인하는 중이므로 S2를 스키마 이름으로 평가하지 않습니다.당신이 그것을 단지 다음과 같이 부를 때.MY_FUNC2
혼란이 없기 때문에 작동합니다.
설명서에서는 이름 확인에 대해 설명합니다.정규화된 개체 이름의 첫 번째 조각(여기서 S2)은 다른 스키마로 평가되기 전에 현재 스키마의 개체로 평가됩니다.
시퀀스가 아닐 수 있습니다. 다른 개체가 동일한 오류를 발생시킬 수 있습니다.데이터 사전을 쿼리하여 이름이 같은 개체가 있는지 확인할 수 있습니다.
select owner, object_type, object_name
from all_objects
where object_name = 'S2';
저도 같은 문제가 있어서 왔습니다.
저에게 문제가 된 것은 절차가 패키지 본문에 정의되어 있지만 패키지 헤더에는 정의되어 있지 않다는 것입니다.
나는 BEGIN END 문을 잃어버린 채 내 기능을 실행하고 있었습니다.
언급URL : https://stackoverflow.com/questions/28706077/why-do-i-get-pls-00302-component-must-be-declared-when-it-exists
'programing' 카테고리의 다른 글
스프링 부트 응용 프로그램에서 인터셉트의 실행 순서를 정의하는 방법은 무엇입니까? (0) | 2023.06.25 |
---|---|
얕은 깃 서브모듈을 만드는 방법은? (0) | 2023.06.25 |
$lookup Aggregation 연산자와 함께 샤딩을 사용하는 MongoDB (0) | 2023.06.25 |
텍스트 속성을 설정한 후 UITextView 스타일을 재설정하고 있습니다. (0) | 2023.06.25 |
문자열에서 수학식 평가 (0) | 2023.06.25 |