PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Général » passage d'un tableau a deux dimension en parametre » 26/04/2011 15:34:06

merci beaucoup pour ton aide

ca va beaucoup m'aider pour mon avancement dans mon projet

#2 Re : Général » passage d'un tableau a deux dimension en parametre » 26/04/2011 13:54:20

désole pour te deranger mais c'est juste que je suis nouveau dans postgres c'est pour ca que j'ai pas beaucoup de connaissance sur lui

donc est ce que vous pouvez m'expliquer comment affecter les resultats de ma fonction dans mes variable apres ca

#3 Re : Général » passage d'un tableau a deux dimension en parametre » 26/04/2011 13:51:16

et c'est avec se record que je peut les avoir c'est ca

merci beaucoup pour ton aide

#4 Re : Général » passage d'un tableau a deux dimension en parametre » 26/04/2011 13:44:12

alors voila la fonction que j'ai creer

CREATE OR REPLACE FUNCTION get_min_matrice (IN matrice double precision[], OUT min double precision, OUT i_min INTEGER,OUT j_min INTEGER) AS $$

DECLARE
BEGIN

	min := 100000;
	i_min := 0;
	j_min := 0;

	for i IN 1..array_length(matrice, 1) LOOP
		for j IN 1..array_length(matrice, 2) LOOP
			if min > matrice[i][j] then
				min = matrice[i][j];
				i_min := i;
				j_min := j;
			end if;
		end loop;
	end loop;

END;
$$ LANGUAGE plpgsql;

et apres dans ma fonction principale je fais appelle a cette fonction pour avoir les valeur du minimum et ses coordonne dans la matrice apres l'avoir initialiser

select get_min_matrice(matrice, min, i_min, j_min);

et je veux que mes parametre min, i_min et j_min soit affecter par les valeurs qui seront les resultat de ma fonction

mais il me donne cette erreur

ERREUR: la fonction get_min_matrice(double precision[], double precision, integer, integer) n'existe pas
État SQL :42883

#5 Re : Général » passage d'un tableau a deux dimension en parametre » 26/04/2011 13:22:29

avec plaisir

dans le passage de mon parametre je veux passer une matrice et avoir comme resultat de sorti le minumim de la matrice et les coordonnees de se min dans la matrice

alors j'ai fais l declaration suivante

CREATE OR REPLACE FUNCTION get_min_matrice (IN matrice double precision[][], OUT min double precision, OUT i_min INTEGER,OUT j_min INTEGER) AS $$

apres de realise mon traitement

mais quand j'applle la fonction par

select get_min_matrice(matrice, min, i_min, j_min);

il me dit

HINT:  Aucune fonction ne correspond au nom donné et aux types d'arguments.

et aussi quand je voie ma fonction dans l'outils d'administration je voie que le double precision [][] devient double precision []

#6 Général » passage d'un tableau a deux dimension en parametre » 26/04/2011 12:59:44

gharras
Réponses : 10

bonjour,

je suis entrain de travailler sur un projet ou j'utilise les tableau a deux dimension

mais le probleme c'est que je ne peut pas le passer en paramétre

si quelqu'un a une idée la dessus je serai bien ravi qu'il me donne sont aide

et merci d'avance

#8 Général » probleme avec tableau 2 dimension » 20/04/2011 15:52:34

gharras
Réponses : 2

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

--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 voila ma requête

SELECT ma_fonction(
    array[1.0, 0.23, 0.7, 0.87],
    array[1.0, 0.23, 0.7]
);

et voila le resultat

NOTICE:  i IS 3
NOTICE:  j IS 4
NOTICE:  j IS 3
 
ERREUR:  indice du tableau en dehors de l'échelle
 
État SQL :2202E

Pied de page des forums

Propulsé par FluxBB