Salut All !

J'ai une fonction plsql, appellée dans une autre fonction plsql.

La première renvoie un text[].

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
--Fonction Explode qui transforme une chaine de caracteres en tableau
CREATE OR REPLACE FUNCTION explode(stringArray text, separator text)  RETURNS text[] AS'
 
DECLARE
postgresArray			text[];
restStringArray			text;
beginning			int;
ending				int;
currentSeparatorPosition	int;
currentValue			text;
i				int;
 
BEGIN
postgresArray:=''{}'';
IF position(''{'' in stringArray)>0 AND position(''}'' in stringArray)>0 THEN
	beginning:=position(''{'' in stringArray)+1;
	ending:=position(''}'' in stringArray)-beginning;
	restStringArray:=substring(stringArray from beginning for ending);
	currentSeparatorPosition:=position(separator in restStringArray)-1;
	i:=1;
	WHILE currentSeparatorPosition>0 LOOP
		currentValue:=substring(restStringArray from 1 for currentSeparatorPosition-1);
		postgresArray[i]:=currentValue;
		restStringArray:=substring(restStringArray from currentSeparatorPosition+1);
		i:=i+1;
		currentSeparatorPosition:=position(separator in restStringArray);
	END LOOP;
ELSE
	postgresArray[1]:=''Error : '' || stringArray || '' is not formated as an array ({..,..,..}).'';
END IF;
RETURN postgresArray;
END;
 
'LANGUAGE 'plpgsql' ;
Quand j'appelle cette première fonction dans la deuxième :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
...
DECLARE
typeCritere text;
tabTypeCritere text[];
...
BEGIN
typeCritere:=''{80,'''',21}'';
SELECT INTO tabTypeCritere explode(typeCritere,'','');
...
j'ai un erreur et j'ai l'impression qu'il n'arrive pas à mettre un text[] dans un autre text[].

J'ai oublié de faire un truc ???