이 객체와 테이블 유형 유무 : 내가 기능 getEmp 및 인수 이름을 가진 고용주를 얻을 수있는 방법개체 멤버 프로 시저에서 중첩 테이블 특성을 호출하는 방법은 무엇입니까?
CREATE TYPE Person_typ AS OBJECT
(
name CHAR(20),
ssn CHAR(12),
address VARCHAR2(100)
);
CREATE TYPE Person_nt IS TABLE OF Person_typ;
CREATE TYPE dept_typ AS OBJECT
(
mgr Person_typ,
emps Person_nt,
MEMBER PROCEDURE getEmp(name IN CHAR(20)),
);
CREATE TABLE dept OF dept_typ;
?
CREATE TYPE BODY dept_typ AS
MEMBER PROCEDURE getEmp(name IN CHAR(20)),
BEGIN
????? What i put where ????
END;
END;
내 문제는 ....
덕분에 내가 self.mgr로 할 수있는 것처럼 내가 self.emps을 할 수 없습니다 ... 왜 내가 아는 없다는 것입니다, 주앙
ok ... 많이 고마워요.하지만 왜이게 작동하지 않는지 설명해 주시겠습니까? select * from self.emps; (당연한 기능) .. 그것은 테이블이나 뷰가 없다고 말하지만 동일한 "self.emps"를 사용하고 itworked ... – joao
@joao -'EMPS'는 테이블이 아닌 콜렉션이므로 직접 선택할 수 없습니다. 당신은'TABLE' 연산자를 사용할 수 있습니다 (즉, SELECT * FROM TABLE (self.emps)), PL/SQL 컬렉션을 SQL 가상 시스템으로 전달한 다음 SQL 가상 시스템에서 PL/SQL 가상 시스템으로 반환 된 결과 만 가져올 것입니다. PL/SQL에 머무르고 컬렉션을 반복하는 것이 더 효율적입니다. –
ok ... \t select * from table (self.emps); did not work too ... (INTO 절이 SELECT 문에서 예상됩니다.) .... 감사합니다. 이제 이해합니다! 그래서 ... 마지막 질문 하나 ... 컬렉션에 커서를 올려 놓을 수 있습니까? – joao