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

一括収集されたレコードタイプのテーブルから選択するにはどうすればよいですか

    問題は、実際には、ORA-22905ではなくPLS-00642エラーです。基本的に、SQLステートメントでローカルコレクションタイプを使用することはできません。したがって、解決策は、スキーマレベルで型を定義することです。この方法でタイプを定義する場合、%TYPE構文を使用することはできず、代わりに列を明示的に定義する必要があります(oracleでタイプの作成中にPLS-00201エラーが発生する )つまり

    create or replace type rec_type as object (
      COLUMN_1 integer,
      COLUMN_2 varchar2(128)
    );
    
    create or replace type tab_type as table of rec_type;
    

    次に、ここで説明するように一括収集を実行するには、値を関連するタイプに明示的に変換する必要があります:ORA-00947タイプをグローバルに宣言するときに値が足りません

    したがって、手順は次のようになります。

    PROCEDURE MYPROC((PARAMS))AS
      TABLE_1 TAB_TYPE;
      lCount  integer;
    BEGIN
    
      SELECT  REC_TYPE(COLUMN_A, COLUMN_B)
      BULK COLLECT INTO TABLE_1 
      FROM  TABLE_A;
    
      SELECT COUNT(*) INTO lCount FROM TABLE(TABLE_1);
    END MYPROC;
    



    1. MySQLクエリは実行されますが、例外がスローされます

    2. Oracle ADF-Tomcat 6.x-MySql 5.5-java.lang.AbstractMethodError

    3. シリアル化されたデータからのPHPの並べ替え

    4. 注文によるグループ化