Bonjour, j'ai un petit soucis de déclaration de mes variables locales. Quelqu'un peut-il m'expliquer comment ça marche?
Merci d'avance

Voici une fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE OR REPLACE FUNCTION get_data (
	   VAR_ID OUT INTEGER,
	   VAR_NAME OUT VARCHAR2
	   )
  RETURN AF_obj_table_Arbo AS
  v_tab AF_obj_table_Arbo := AF_obj_table_Arbo();
BEGIN
	FOR cur_cdl IN (SELECT ID, NAME FROM SOC
		         WHERE SOC_DT_SUP IS NULL AND SOC_REGROUP = 15)
	LOOP
		VAR_ID := cur_cdl.ID;
		VAR_NAME := cur_cdl.NAME;
	END LOOP;
	RETURN v_tab;
END;
Les variables VAR_ID et VAR_NAME sont déclarées comme varialbles OUT
Quand je compile, ça marche

Mais en fait j'aimerai que ces deux varialbles soient locales à la fonction et non en paramètre

J'ai fait ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE OR REPLACE FUNCTION get_data ()
  RETURN AF_obj_table_Arbo AS
  v_tab AF_obj_table_Arbo := AF_obj_table_Arbo();
DECLARE
   VAR_ID INTEGER;
   VAR_NAME VARCHAR2 (100);
 
BEGIN
	FOR cur_cdl IN (SELECT ID, NAME FROM SOC
		         WHERE SOC_DT_SUP IS NULL AND SOC_REGROUP = 15)
	LOOP
		VAR_ID := cur_cdl.ID;
		VAR_NAME := cur_cdl.NAME;
	END LOOP;
	RETURN v_tab;
END;
j'ai une erreur de compilation