pl/sql에 공통 조상 클래스가 있습니까? PL/SQL : 공통 조상 클래스?
Object o;
o = new String("hi ancestor"); // a String is an Object
그러나
은 PL/SQL에서 우리가 말할 수 없습니다 :o Object; // Object class doesn't exist
o := new myclass('hi ancestor');
예를 들어
는 자바에서 "개체"클래스는 일반적인 모든 클래스의 조상 업데이트 :이 질문은 pl/sql이 모든 클래스에 공통 조상 (루트) 클래스를 가지고 있는지를 아는 것보다 실용적인 것보다 더 이론적이었습니다. 문서에서 아무 것도 발견하지 못했기 때문입니다. 응답은 그러한 공통 클래스가 없음을 확인했습니다. 어쨌든, 나는 응답의 sugestions을 기반으로 일반적인 루트 클래스를 시뮬레이트하는 방법에 대한 몇 가지 예제를 제공 할 것입니다.
이를 수행하는 방법은 anydata 유형을 사용하여 Alex가 제공하는 속임수이며, 일반 클래스에 대한 형변환을 시뮬레이트합니다. 함수의 매개 변수로 클래스를 사용하는 것이 유용 할 수 있습니다. 사용의 예 :
create or replace type cla as object -- class
(
name varchar2(50)
);
declare
co cla; -- cla class object
co2 cla; -- another one
o anydata; -- Object class simulation object
ok pls_integer; -- to take value returned by the re-cast
begin
co := new cla('hi'); -- create cla object
o := anydata.convertobject(co); -- cast to anydata (not automatic)
ok := anydata.getobject(o, co2); -- re-cast to cla
dbms_output.put_line('co.name: ' || co.name);
dbms_output.put_line('co2.name: ' || co2.name);
end;
또 다른 방법, user272735에 의해 제안, 루트의 모든 클래스의 부모가 될 것이다 클래스를 작성하여 공통 루트 클래스를 시뮬레이션하는 것입니다. 예를 들면 다음과 같습니다.
create or replace type obj as object -- Object class simulation
(
oid varchar2(1000)
)
not final;
create or replace type cla1 under obj -- explicit inheritance
(
name varchar2(50)
);
create or replace type cla2 under obj -- explicit inheritance
(
money number(6)
);
declare
o1 cla1; -- cla1 class object
o1b cla1; -- another one
o2 cla2; -- cla2 class object
o2b cla2; -- another one
o obj; -- common ancestor
begin
o1 := new cla1('1', 'hi'); -- create cla1 object
o := o1; -- cast to obj (automatic)
o1b := treat(o as cla1); -- re-cast to cla1
dbms_output.put_line('o1.name: ' || o1.name);
dbms_output.put_line('o1b.name: ' || o1b.name);
o2 := new cla2('2', 222); -- create cla2 object
o := o2; -- cast to obj (automatic)
o2b := treat(o as cla2); -- re-cast to cla2
dbms_output.put_line('o2.money: ' || o2.money);
dbms_output.put_line('o2b.money: ' || o2b.money);
end;
번호 PL/SQL 사람들을 통해 객체 지향 물건을 할, 또는 전체 데이터베이스 밖으로 이동하는 데이터베이스에 Java 클래스를 저장하는 더 나을 수 있습니다 객체 모델에는 Java의 java.lang.Object와 같은 클래스 계층 루트 클래스가 없습니다. 필요할 경우 직접 제작해야합니다. – user272735
오브젝트 관계형 코딩에 대한 Oracle 문서는 [here] (http://docs.oracle.com/cd/E11882_01/appdev.112/e11822/adobjbas.htm#ADOBJ002)를 참조하십시오. – tbone
@tbone 감사합니다. 이미 그 페이지를 알고있었습니다 :-) – freesoft