Vous n'êtes pas identifié(e).
Bonjour,
Savez vous de quand date (quelle version de PG) la syntaxe permettant d'utiliser directement le nom des paramètres dans le corps des functions à la place de leur position ordinale avec les $1, $2, $3... ?
A +
Frédéric Brouard, alias SQLpro, ARCHITECTE DE DONNÉES, Expert langage SQL
Le site sur les SGBD relationnel et langage SQL : http://sqlpro.developpez.com/
Modélisation de données, conseil, expertise, audit, optimisation, tuning, formation
* * * * * Enseignant CNAM PACA, ISEN Toulon, CESI Aix en Provence * * * * *
Hors ligne
8.1. Auparavant, il était possible d'utiliser la clause ALIAS FOR (http://docs.postgresql.fr/8.0/plpgsql-d … ON-ALIASES), qui donnait le même résultat.
Guillaume.
Hors ligne
8.1. Auparavant, il était possible d'utiliser la clause ALIAS FOR (http://docs.postgresql.fr/8.0/plpgsql-d … ON-ALIASES), qui donnait le même résultat.
Oui, ça j’avais vu, mais le problème est que même en ALIAS c'est de la constante !!!!
A +
Frédéric Brouard, alias SQLpro, ARCHITECTE DE DONNÉES, Expert langage SQL
Le site sur les SGBD relationnel et langage SQL : http://sqlpro.developpez.com/
Modélisation de données, conseil, expertise, audit, optimisation, tuning, formation
* * * * * Enseignant CNAM PACA, ISEN Toulon, CESI Aix en Provence * * * * *
Hors ligne
Qu'est-ce que vous entendez par « c'est de la constante » ?
Guillaume.
Hors ligne
Exemple :
CREATE FUNCTION F_JOUR_EN_8(d DATE)
RETURNS DATE
AS
$corps$
DECLARE semaine CONSTANT INTEGER := 7;
date_retour DATE;
BEGIN
d := d + semaine * INTERVAL '1 DAY';
RETURN d;
END;
$corps$
LANGUAGE PLPGSQL
Message d'erreur précis :
ERREUR: « $1 » est déclaré CONSTANT
CONTEXT: compilation de la fonction PL/pgsql « f_jour_en_8 » près de la ligne 4
Avec ou sans alias l'utilisation des arguments est passé en valeur !
A +
Dernière modification par SQLpro (17/06/2011 09:19:08)
Frédéric Brouard, alias SQLpro, ARCHITECTE DE DONNÉES, Expert langage SQL
Le site sur les SGBD relationnel et langage SQL : http://sqlpro.developpez.com/
Modélisation de données, conseil, expertise, audit, optimisation, tuning, formation
* * * * * Enseignant CNAM PACA, ISEN Toulon, CESI Aix en Provence * * * * *
Hors ligne
Je laisse répondre gleu pour le reste, mais c'est le genre de fonctions qu'il vaut mieux écrire en SQL.
CREATE FUNCTION f_jour_en_8(d date) returns date language sql as $$
select ($1+interval '7 days')::date;
$$ IMMUTABLE
;
L'avantage des fonctions SQL, c'est qu'elles peuvent être «inlinées» dans le corps de la requête appelante.
Par ailleurs, si tu persistes à vouloir la faire en plpgsql, il faudrait la déclarer comme immutable (comme je l'ai fait aussi pour ma fonction SQL).
Marc.
Hors ligne
C'est vrai jusqu'à la 9.0. Avec la 9.0, il est possible d'affecter des valeurs à des paramètres en entrée.
Guillaume.
Hors ligne