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

#1 07/02/2019 15:47:20

hqfont
Membre

Passage en paramètres d'un type ARRAY.

Bonjour,

Le passage d'un paramètre de type ARRAY dans une fonction ne semble pas possible.
Quelle serait la bonne méthode à utiliser pour arriver à ce résultat ?

Ci-dessous, le modèle de fonction que je voudrai implémenter :

CREATE OR REPLACE FUNCTION Ma_Fonction (P_REC MATABLE%ROWTYPE)
RETURNS INTEGER
AS $$
DECLARE
  -- Declarations
  C_Ret INTEGER;
  
BEGIN
  
  C_Ret := 0;
  
  -- Le code
  -- ....
  
  RETURN C_Ret;

END;
$$ LANGUAGE plpgsql;

J'obtiens une erreur de ce type :

erreur de syntaxe sur ou près de « % »

J'ai également essayé d'associer le type RECORD au paramètre, mais ce type ne semble pas  autorisé pour un paramètre de fonction.

Quelle serait la meilleure façon de  procéder pour traiter cette problématique ?

D'avance merci de votre retour.

Cordialement.

Hors ligne

#2 07/02/2019 17:52:26

gleu
Administrateur

Re : Passage en paramètres d'un type ARRAY.

Le passage d'un paramètre de type ARRAY est tout à fait possible. Par contre, vous ne pouvez pas faire un %ROWTYPE pour un type d'un argument d'une fonction. Ça ne fait pas partie du langage SQL. C'est du PL/pgsql.


Guillaume.

Hors ligne

#3 07/02/2019 17:58:05

hqfont
Membre

Re : Passage en paramètres d'un type ARRAY.

Merci du retour.

Je suis parti sur l'idée de créer un type de donnée (par la fonction CREATE TYPE).
Je cherche une façon de créer un type de donnée correspondant à la description de ma table.
Quelle serait la meilleure façon ?

Hors ligne

#4 07/02/2019 18:26:38

gleu
Administrateur

Re : Passage en paramètres d'un type ARRAY.

La meilleure façon serait certainement de ne pas le créer, vu qu'il existe déjà smile


Guillaume.

Hors ligne

Pied de page des forums