Vraag : ORA: 6533 subscript uit waaier

Bij de lijn PREC_CEP_CALCULATIONS_ARRAY.EXTEND;  Ik word uit subscriptfout.  

I gebruikte de gegevens bij deze Web-pagina om tot mijn dimensionale serie te leiden 2.  
http://www.oracle.com/tech nology/oramag/oracle/06-jan/o16plsql.html

In het horloge, de serie niet aan enige elementen verschijnt, heeft het enkel in andere pogingen gehad.  
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
create of vervangt
PROCEDURE PREC_CEP_CALCULATED
ZOALS
BEGIN
  VERKLAAR
    PREC_CEP_CALCULATIONS_ARRAY twodim_varray.array_t
      : = twodim_varray.array_t ();
    MPI_D_DF AANTAL (10.6);
    MPI_D_RG AANTAL (10.6);
    S_DF AANTAL (10.6);
    S_RG AANTAL (10.6);
    ik AANTAL;
    j AANTAL;
    k AANTAL;
    l AANTAL;
    HET AANTAL VAN HET EEKHOORNTJESBROOD (10.6);
    HET TYPE RADIUS_ARRAY IS VARRAY (475) VAN AANTAL (10.3);
    STRAAL RADIUS_ARRAY: = RADIUS_ARRAY ();
    delta_range AANTAL (10.3);
    STEP_RADIUS AANTAL (10.3);
    HET TYPE THETA_ARRAY IS VARRAY (507) VAN AANTAL (10.2);
    THETA THETA_ARRAY: = THETA_ARRAY ();
    STEP_THETA AANTAL (10.2);
    
  BEGIN
    SELECTEER Dr. IN delta_range VAN INTEGRATION_VARIABLES;
      radius.extend (475);
    VOOR I IN 1. 475 LIJN
      STEP_RADIUS: = delta_range * (I-1);
      STRAAL (I): = STEP_RADIUS;
    DE LIJN VAN HET EIND;
    
      THETA.EXTEND (507);
    VOOR I IN 1. 507 LIJN
      STEP_THETA: = (3.141/253) * (I-1);
      THETA (I): = STEP_THETA;
    DE LIJN VAN HET EIND;
    
    PREC_CEP_CALCULATIONS_ARRAY.EXTEND;
    PREC_CEP_CALCULATIONS_ARRAY (475)
      : = twodim_varray.data_t ();
    PREC_CEP_CALCULATIONS_ARRAY (507) .EXTEND;
    PREC_CEP_CALCULATIONS_ARRAY (1) (1): = 0;

    SELECTEER MPI_DELTA_DF IN MPI_D_DF VAN INTEGRATION_VARIABLES;
    SELECTEER MPI_DELTA_RG IN MPI_D_RG VAN INTEGRATION_VARIABLES;
    SELECTEER SIGMA_DF IN S_DF VAN INTEGRATION_VARIABLES;
    SELECTEER SIGMA_RG IN S_RG VAN INTEGRATION_VARIABLES;

    
    VOOR k IN 1. 475 LIJN
      VOOR l IN 1. 507 LIJN
        EEKHOORNTJESBROOD: =PREC_CEP_CALCULATION (THETA (L), STRAAL (K), S_DF, S_RG, MPI_D_DF, MPI_D_RG);
        prec_cep_calculations_array (k) (l): = EEKHOORNTJESBROOD;
      DE LIJN VAN HET EIND;
    DE LIJN VAN HET EIND;
  EIND;
EIND PREC_CEP_CALCULATED;

Antwoord : ORA: 6533 subscript uit waaier

Maak uw voorbeeld gemakkelijker…

ja, kunt zich u tot de grens van varray uitbreiden, maar u moet het aan een lege serie eerst initialiseren.

Aangezien er werkelijk geen tweedimensionaal concept is, moet u elke genestelde varray initialiseren eveneens, dan elk van hen uitbreiden.

Het fragment toont hieronder hoe te om beide afmetingen volledig te initialiseren.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
VERKLAAR
    HET TYPE DATA_T IS VARRAY (475) VAN AANTAL;

    Het TYPE array_t IS VARRAY (507) VAN data_t;

    v_array array_t: = array_t ();
BEGIN
    v_array.EXTEND (507);

    VOOR I IN 1. v_array.COUNT
    LIJN
        v_array (I): = data_t ();
        v_array (I) .EXTEND (475);
    DE LIJN VAN HET EIND;
EIND;
Andere oplossingen  
 
programming4us programming4us