Results 1 to 1 of 1
  1. #1
    Join Date
    Jan 2004
    Location
    Sochaux (France)
    Posts
    55

    Question Unanswered: Initialize VARRAY

    Hi,
    I wrote a stored PL/SQL procedure which used VARRAY.
    I need to initialize them many time on the beginning of LOOP.
    Here is a part of my code :
    Code:
    Declare
    TYPE table_type IS VARRAY(1000) OF VARCHAR2(3);
    
    v_zone_attribut_DPC	  table_type := table_type();
    v_zone_attribut_T	  table_type := table_type();
    v_zone_attribut_F	  table_type := table_type();
    v_zone_attribut_G	  table_type := table_type();
    v_zone_attribut_B	  table_type := table_type();
    
    p_zone_attribut_DPC	  VARCHAR2(2001);
    p_zone_attribut_T	  VARCHAR2(400);
    p_zone_attribut_F	  VARCHAR2(200);
    p_zone_attribut_G	  VARCHAR2(200);
    p_zone_attribut_B	  VARCHAR2(40);
    
    
    BEGIN
    	v_zone_attribut_DPC.extend(667);
    	v_zone_attribut_T.extend(200);
    	v_zone_attribut_F.extend(100);
    	v_zone_attribut_G.extend(100);
    	v_zone_attribut_B.extend(20);
    ....
    	LOOP
    		FOR i IN v_zone_attribut_DPC.FIRST..v_zone_attribut_DPC.LAST
    		LOOP
    			v_zone_attribut_DPC(i) := '   '; -- 3 spaces
    		END LOOP;
    		FOR i IN v_zone_attribut_T.FIRST..v_zone_attribut_T.LAST  
    		LOOP
    			v_zone_attribut_T(i) := '  '; -- 2 spaces
    		END LOOP;
    		FOR i IN v_zone_attribut_F.FIRST..v_zone_attribut_F.LAST 
    		LOOP
    			v_zone_attribut_F(i) := '  ';-- 2 spaces
    		END LOOP;
    		FOR i IN v_zone_attribut_G.FIRST..v_zone_attribut_G.LAST 
    		LOOP
    			v_zone_attribut_G(i) := '  ';-- 2 spaces
    		END LOOP;
    		FOR i IN v_zone_attribut_B.FIRST..v_zone_attribut_B.LAST 
    		LOOP
    			v_zone_attribut_B(i) := '  ';-- 2 spaces
    		END LOOP;
    ...
    		LOOP
    ...
    			IF (v_current_nature_attr IN ('D', 'P', 'C')) THEN
    				v_zone_attribut_DPC (v_current_rang_attr) := v_current_nature_attr || v_current_valeur_attr;
    			ELSIF v_current_nature_attr = 'T' THEN
    				v_zone_attribut_T (v_current_rang_attr) := v_current_valeur_attr;
    			ELSIF v_current_nature_attr = 'F' THEN
    				v_zone_attribut_F (v_current_rang_attr) := v_current_valeur_attr;
    			ELSIF v_current_nature_attr = 'G' THEN
    				v_zone_attribut_G (v_current_rang_attr) := v_current_valeur_attr;
    			ELSIF v_current_nature_attr = 'B' THEN
    				v_zone_attribut_B (v_current_rang_attr) := v_current_valeur_attr;
    			END IF;
    ...
    		END LOOP;
    ...
    		FOR i IN v_zone_attribut_DPC.FIRST..v_zone_attribut_DPC.LAST  -- 2001 caractères pour la ZONE_ATTRIBUTS_DPC  => 667*3
    		LOOP
    			p_zone_attribut_DPC := p_zone_attribut_DPC || v_zone_attribut_DPC(i);
    		END LOOP;
    		FOR i IN v_zone_attribut_T.FIRST..v_zone_attribut_T.LAST  -- 400 caractères pour la ZONE_ATTRIBUTS_T  => 200*2
    		LOOP
    			p_zone_attribut_T := p_zone_attribut_T || v_zone_attribut_T(i);
    		END LOOP;
    		FOR i IN v_zone_attribut_F.FIRST..v_zone_attribut_F.LAST  -- 200 caractères pour la ZONE_ATTRIBUTS_F => 100*2
    		LOOP
    			p_zone_attribut_F := p_zone_attribut_F || v_zone_attribut_F(i);
    		END LOOP;
    		FOR i IN v_zone_attribut_G.FIRST..v_zone_attribut_G.LAST  -- 200 caractères pour la ZONE_ATTRIBUTS_G  => 100*2
    		LOOP
    			p_zone_attribut_G := p_zone_attribut_G || v_zone_attribut_G(i);
    		END LOOP;
    		FOR i IN v_zone_attribut_B.FIRST..v_zone_attribut_B.LAST  -- 40 caractères pour la ZONE_ATTRIBUTS_B  => 15*2
    		LOOP
    			p_zone_attribut_B := p_zone_attribut_B || v_zone_attribut_B(i);
    		END LOOP;
    ...
    	END LOOP;
    ...
    END;
    Is there antother way to initialize these VARRAY ?
    I ask for this question because i initialize them 750000 * 200 * 24 times.
    Can you help me ?
    Last edited by venderic; 01-22-04 at 09:42.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •