Oracle
 sql >> Database >  >> RDS >> Oracle

Impossibile utilizzare Oracle SYS_REFCURSOR come tipo restituito

Non sono sicuro di cosa stai cercando di ottenere, ma penso che tu abbia frainteso il concetto di oggetto in Oracle. Nel mio esempio presumo
1) Table studens è creato con questo script create table student of student_t;

drop table student;

Crea le specifiche del tipo e il corpo.

create or replace type student_t as object(
stno char(4),
dob date,
member function getYear return number

)
;

create or replace type body student_t as

    member function getYear return number is 
    begin 
            return  EXTRACT(YEAR FROM self.dob);
    end;

end;

Crea una tabella di studnet

create table student of student_t;

Compila la tabella

declare 
  v_student student_t;
begin 
for i in 0 .. 10 loop 
  insert into student values(student_t('ST'||+mod(i,3),to_date('01-01-'||to_char(2000+i),'dd-mm-yyyy')));
end loop;
commit;
end; 

E la domanda.

select s.*,s.getYear() from student s;