sql >> データベース >  >> RDS >> Oracle

OracleSYS_REFCURSORは戻り型として使用できませんでした

    何を達成しようとしているのかわかりませんが、オラクルのオブジェクトの概念を誤解していると思います。私の例では、
    1)テーブルstudensはこのスクリプトで作成されますcreate table student of student_t;

    drop table student;

    タイプスペックとボディを作成します。

    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;
    

    スタッドネットのテーブルを作成する

    create table student of student_t;
    

    テーブルにデータを入力する

    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; 
    

    そしてクエリ。

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



    1. OUT パラメータとして SYS_REFCURSOR を持つ Oracle 関数を呼び出す方法

    2. カンマ区切りの値に基づいてテーブルを結合する

    3. mysqlで無制限に3番目に高い給与を見つける

    4. SQLServerでのデータファイル管理の基本