5
객체 생성자에 인수가없는 생성자가 있지만 해당 유형의 열에 기본값으로 지정하면 ORA-00904 : 잘못된 식별자 오류가 발생합니다.오라클 : 객체 유형 열의 기본값 지정
예 :
CREATE OR REPLACE TYPE test_t AS OBJECT ( val NUMBER(10), CONSTRUCTOR FUNCTION test_t return self as result ) CREATE OR REPLACE TYPE BODY test_t AS CONSTRUCTOR FUNCTION test_t RETURN SELF AS RESULT IS BEGIN val := 1; RETURN; END; END; CREATE TABLE test_table ( test_attr test_t DEFAULT new test_t() ) Error: ORA-00904: "INKA"."TEST_T"."TEST_T": invalid identifier
나는 예를 들어, 기본적를 교체하는 경우 test_t (1), 작동하지만 그 일종의 OO 캡슐화 패러다임을 깨고 같은 유형의 모든 필드에 동일한 기본 "기본값"을 갖기를 바란다. (내 뜻을 알기를 바란다.)
누락 여기 또는 무언가가 정상이며 이것이 아닌 기본 생성자를 사용할 수 없습니까?
ORA-06553 일치 : PLS-307 중복 생성자 정의의 결과를, 오라클이 점에서 다소 재미; "in_val"매개 변수 이름을 val로 대체하면 (속성 이름과 마찬가지로) 기본 생성자를 올바르게 대체합니다. –
그래도 여전히이 생성자를 찾습니다 ... –
나는 방아쇠 해결책을 알고 있지만 훨씬 더 읽기 쉽고 다루기 쉬운 방식으로 가능한 5-10 줄의 코드를 알고 있습니다. 처음에는 SQL 컨텍스트가 PL/SQL 컨텍스트 내에서 보지 못하기 때문에 가능하지 않다고 추측 했었지만 그 이후로는 순수한 SQL에서는 작동하지 않을 것입니다. 따라서이 문제는 오라클의 부분에 대한 감독이거나 내가 인식하지 못하는 구문이 있습니다 ... –