title: ORA-22813: operand value exceeds system limits
body: <p>I'm having an issue with an oracle object I created. The goal of the stored procedure is to either retreive all wires contained on an airplane or compare the list of wires with another one (past airplane wire configuration). You will understand that this can be quite big... I did a first shot with a table of objects. I make a select statement and loop through a cursor to insert values in my objects. The problem comes from when I try this:</p>
  
  <pre><code>OPEN P_CURSOR FOR
    SELECT * FROM TABLE(CAST(GET_WIRES(P_ACTUAL_HAR_LIST, P_END_IDENT_TYPES) AS TBL_TP_WIRE_LIST));
  </code></pre>
  
  <p>I get the ORA-22813: operand value exceeds system limits. So, I started looking on the internet and I found that I should have used a PIPELINED function, which I tryied. But, the PIPELINED function is not allowed in a PL/SQL context, so that doesn't fit my problem, since I need to rework the object afterward. So, I tryied a Global Temporary Table and I have now performance issue. I also tryied to contact the DBA if he could increase the PGA size, which he did (it's now 150mb) but I have the same problem. Maybe it's still not big enough, but I don't want him to reincrease it if it's not going to work... Just so you have an idea, I have 1 487 761 of those:</p>
  
  <pre><code>CREATE OR REPLACE
  TYPE TP_WIRE_LIST_ENTRY AS OBJECT (
    ATA_NUM                   VARCHAR2(8 BYTE),
    EFFECTIVITIES             VARCHAR2(4000 BYTE),
    WIRE_ID                   VARCHAR2(50 BYTE),
    DRAWING_NO                VARCHAR2(25 BYTE),
    END_IDENT_1               VARCHAR2(25 BYTE),
    END_IDENT_2               VARCHAR2(25 BYTE),
    PIN_1                     VARCHAR2(25 BYTE),
    PIN_2                     VARCHAR2(25 BYTE),
    TERM_1                    VARCHAR2(25 BYTE),
    TERM_2                    VARCHAR2(25 BYTE),
    DES_LENGTH                NUMBER(6,2),
    TECH_PUBS_REMARKS         VARCHAR2(500 BYTE),
    WIRE_CODE                 VARCHAR2(25 BYTE),
    W_CODE                    VARCHAR2(3 BYTE),
    AWG                       VARCHAR2(3 BYTE),
    COLOR                     VARCHAR2(4 BYTE),
    GA                        VARCHAR2(6 BYTE),
    END_IDENT_DESC_1          VARCHAR2(50 BYTE),
    END_IDENT_DESC_2          VARCHAR2(50 BYTE),
    TECH_PUBS_REMARKS_1       VARCHAR2(500 BYTE),
    TECH_PUBS_REMARKS_2       VARCHAR2(500 BYTE),
    IDENT_TYPE_ID_1           VARCHAR2(10 BYTE),
    IDENT_TYPE_ID_2           VARCHAR2(10 BYTE),
    BUS_NAME_1                VARCHAR2(20 BYTE),
    PROPERTY_COLLECTION_ID_1  NUMBER(10,0),
    BUS_NAME_2                VARCHAR2(20 BYTE),
    PROPERTY_COLLECTION_ID_2  NUMBER(10,0),
    X_1                       NUMBER(8,3),
    Y_1                       NUMBER(8,3),
    Z_1                       NUMBER(8,3),
    UOM_1                     VARCHAR2(10 BYTE),
    X_2                       NUMBER(8,3),
    Y_2                       NUMBER(8,3),
    Z_2                       NUMBER(8,3),
    UOM_2                     VARCHAR2(10 BYTE),
    COORD_CODE_1              VARCHAR2(10 BYTE),
    COORD_CODE_2              VARCHAR2(10 BYTE),
    UOM_DESC_1                VARCHAR2(50 BYTE),
    UOM_DESC_2                VARCHAR2(50 BYTE),
    PART_NO                   VARCHAR2(25 BYTE),
    PART_DESC                 VARCHAR2(50 BYTE),
    WIRE_GAUGE                VARCHAR2(4 BYTE),
    SPEC_REFERENCE            VARCHAR2(60 BYTE),
    MPS_NUM                   VARCHAR2(25 BYTE),
    PPS_NUM                   VARCHAR2(25 BYTE),
    INSERTION_TOOL            VARCHAR2(25 BYTE),
    EXTRACTION_TOOL           VARCHAR2(25 BYTE) 
  );
  /
  </code></pre>
  
  <p>We work with Oracle9i Enterprise Edition Release 9.2.0.6.0</p>
  
  <p>Best regards,</p>