Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle SYS_REFCURSOR n'a pas pu être utilisé comme type de retour

Je ne suis pas sûr de ce que vous essayez de réaliser, mais je pense que vous avez mal compris le concept d'objet dans Oracle. Dans mon exemple, je suppose
1) La table studens est créée avec ce script create table student of student_t;

drop table student;

Créez la spécification de type et le corps.

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;

Créer un tableau de studnets

create table student of student_t;

Remplir le tableau

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; 

Et la requête.

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