sql >> Base de Datos >  >> RDS >> Oracle

Oracle SYS_REFCURSOR no se pudo usar como tipo de retorno

No estoy seguro de lo que está tratando de lograr, pero creo que no entendió el concepto de objeto en Oracle. En mi ejemplo, asumo
1) Table studens se crea con este script create table student of student_t;

drop table student;

Crear especificación de tipo y cuerpo.

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;

Crear tabla de estudiantes

create table student of student_t;

Rellenar tabla

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; 

Y la consulta.

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