Re: Erreur sur une fonction avec un argument de type (integer, [numeric, numeric]

From: Marc Cousin <cousinmarc(at)gmail(dot)com>
To: pgsql-fr-generale(at)postgresql(dot)org
Cc: "GIUSEFFI Marie" <marie(dot)giuseffi(at)cea(dot)fr>
Subject: Re: Erreur sur une fonction avec un argument de type (integer, [numeric, numeric]
Date: 2010-08-25 14:03:31
Message-ID: 201008251603.32076.cousinmarc@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

The Wednesday 25 August 2010 14:33:46, GIUSEFFI Marie wrote :
> Bonjour,
>
> J'aimerais créer une fonction avec comme argument un index et un tableau contenant deux éléments x et y.
>
> La fonction (voir ci-dessous) est bien acceptée par postgre (8.4.4 ss windowsXP) mais dès que j'essaye de l'appeler, un message d'erreur m'indique que la fonction ne correspond pas au nom donné et aux types d'arguments.
>
> Si quelqu'un a une idée sur comment passer les arguments à la fonction ?
>
> Cordialement
>
> Marie
>
>
>
> DROP TYPE IF EXISTS tab_abscisse CASCADE;
>
> CREATE TYPE tab_abscisse AS (
>
> x numeric,
>
> y numeric
>
> );
>
> CREATE OR REPLACE FUNCTION fct_a(
>
> id_tab integer,
>
> tab_abs tab_abscisse [] )
>
> RETURNS integer AS $$
>
>
>
> BEGIN
>
> RETURN 1;
>
> END;
>
> $$ LANGUAGE plpgsql;
>
>
>
>
>
> SELECT fct_a(1, ARRAY[[1.0,2.0], [3.0,4.0]] ) AS answer;
>
> Ou
>
> SELECT fct_a(1, ARRAY[ARRAY[1,2], ARRAY[3,4]] ) AS answer;
>
>
>
> ERREUR: la fonction fct_a(integer, numeric[]) n'existe pas
>
> LINE 2: SELECT fct_a(1, ARRAY[[1.0,2.0], [3.0,4.0]] ) AS answer;

La bonne syntaxe :

SELECT fct_a(1, ARRAY[ (1.0,2.0)::tab_abscisse, (3.0,4.0)::tab_abscisse] ) AS answer;

Il attend un tableau de tab_abscisse. Ce qui n'est pas exactement la même chose qu'un tableau à deux dimensions de numériques.

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message damien clochard 2010-09-02 08:55:32 PG Day Europe 2010 : Appel à Conférenciers
Previous Message GIUSEFFI Marie 2010-08-25 12:33:46 Erreur sur une fonction avec un argument de type (integer, [numeric, numeric]