Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/04/2011, 13h25   #1
Membre du Club
 
Homme Mohammed GHARRAS
Étudiant
Inscription : juin 2009
Messages : 77
Détails du profil
Informations personnelles :
Nom : Homme Mohammed GHARRAS
Âge : 24
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2009
Messages : 77
Points : 46
Points : 46
Par défaut besoin d'aide dans un tableau a 2 dimension

salut,

mon problème c'est que j'ai une fonction que je lui passe deux tableau comme paramètre, et avec c'est deux tableau je doit créer une matrice. Mais le problème c'est que je ne sais pas comment donner a ma matrice les dimension nécessaire pour que je puisse l'utiliser.
Il me donne a chaque fois une erreur d'indice en dehors de l'échelle.
voila le code qui me donne le probleme
Code :
1
2
3
4
5
6
7
8
9
 
--vec1 et vec2 sont deux tableau que je passe en parametre de la fonction
FOR i IN REVERSE array_length(vec1, 1)..1 LOOP
		RAISE NOTICE 'i is %', i;
		FOR j IN REVERSE array_length(vec2, 1)..1 LOOP
			RAISE NOTICE 'j is %', j;
			matrice[i][j] := abs(vec1[i] - vec2[j]);
		end loop;
	end loop;
et pour les raise notice je les utilise pour debuguer et le resultat qui me donne et celui la

Code :
1
2
3
4
SELECT ma_fonction(
    array[1.0, 0.23, 0.7, 0.87],
    array[1.0, 0.23, 0.7]
);
Code :
1
2
3
4
5
6
7
NOTICE:  i IS 3
NOTICE:  j IS 4
NOTICE:  j IS 3
 
ERREUR:  indice du tableau en dehors de l'échelle
 
État SQL :2202E
et merci d'avance
gharras est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 17h35   #2
Modérateur
 
Inscription : octobre 2008
Messages : 1 505
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 505
Points : 2 034
Points : 2 034
Comment tu as déclaré ta variable matrice?
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 18h14   #3
Membre du Club
 
Homme Mohammed GHARRAS
Étudiant
Inscription : juin 2009
Messages : 77
Détails du profil
Informations personnelles :
Nom : Homme Mohammed GHARRAS
Âge : 24
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2009
Messages : 77
Points : 46
Points : 46
Code :
matrice double precision[][];
comme ca
gharras est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 19h21   #4
Modérateur
 
Inscription : octobre 2008
Messages : 1 505
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 505
Points : 2 034
Points : 2 034
plpgsql n'est pas capable de redimensionner dynamiquement un tableau à dimensions multiples, et en plus c'est l'affectation qui lui donne ses dimensions réelles et non la déclaration.
Donc il faudrait une instruction du genre
Code :
 matrice:='{{0,0,0}, {0,0,0}, {0,0,0}}';
pour initialiser la matrice.
Si les dimensions sont dynamiques, il faut générer dynamiquement cette chaine de caractères et l'affecter au tableau.

Une autre idée plus pratique est d'y accéder en une seule dimension avec matrice[i*N+j]

Pour des problèmes plus complexes avec les tableaux, le mieux est d'utiliser un autre langage comme pl/perl.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 19h45   #5
Membre du Club
 
Homme Mohammed GHARRAS
Étudiant
Inscription : juin 2009
Messages : 77
Détails du profil
Informations personnelles :
Nom : Homme Mohammed GHARRAS
Âge : 24
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2009
Messages : 77
Points : 46
Points : 46
merci pour ton aide
gharras est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h38.


 
 
 
 
Partenaires

Hébergement Web