Lists: | Postg스포츠 토토 사이트SQL |
---|
From: | Samuel ROZE <samuel(dot)roze(at)aliceadsl(dot)fr> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | pgplsql: Substitution de variables |
Date: | 2008-09-02 17:42:35 |
Message-ID: | 1220377355.7881.13.camel@samuel-laptop |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | Postg스포츠 토토 사이트SQL |
Bonjour à tous (encore une fois :) ),
Je suis actuellement confronté à un problème que je trouve assez bizare,
lors de la substitution de variables dans une requête SELECT :
----------
[...]
SELECT (timestamp with time zone "v_new_time" - timestamp with time zone
"v_temps") INTO v_interval;
[...]
----------
Cette simple commande SELECT ... INTO donne cette erreur :
----------
7-statistiques-triggers.sql:116: ERREUR: erreur de syntaxe sur ou près
de « $1 » at character 37
QUERY: SELECT (timestamp with time zone $1 - timestamp with time zone
$2 )
CONTEXT: SQL statement in PL/PgSQL function "parse_donnees_brutes" near
line 66
----------
Je ne comprend pas... J'ai essayer avec des guillements simple, ça
marche mais après lors de l'exécution il y a un problème logique qui me
dit par exemple que "v_new_time n'est pas du type timestamptz"...
Pouvez-vous m'aider ou me donner des pistes ?
Merci à vous.
Cordialement, Samuel ROZE.
From: | Guillaume Lelarge <guillaume(at)lelarge(dot)info> |
---|---|
To: | Samuel ROZE <samuel(dot)roze(at)aliceadsl(dot)fr> |
Cc: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: pgplsql: Substitution de variables |
Date: | 2008-09-02 19:19:49 |
Message-ID: | 48BD91D5.9030707@lelarge.info |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Samuel ROZE a écrit :
> Bonjour à tous (encore une fois :) ),
>
> Je suis actuellement confronté à un problème que je trouve assez bizare,
> lors de la substitution de variables dans une requête SELECT :
>
> ----------
> [...]
> SELECT (timestamp with time zone "v_new_time" - timestamp with time zone
> "v_temps") INTO v_interval;
> [...]
> ----------
>
> Cette simple commande SELECT ... INTO donne cette erreur :
>
> ----------
> 7-statistiques-triggers.sql:116: ERREUR: erreur de syntaxe sur ou près
> de « $1 » at character 37
> QUERY: SELECT (timestamp with time zone $1 - timestamp with time zone
> $2 )
> CONTEXT: SQL statement in PL/PgSQL function "parse_donnees_brutes" near
> line 66
> ----------
>
> Je ne comprend pas... J'ai essayer avec des guillements simple, ça
> marche mais après lors de l'exécution il y a un problème logique qui me
> dit par exemple que "v_new_time n'est pas du type timestamptz"...
>
Logique car un guillemet simple indique une chaîne de caractères, et la
chaîne de caractères 'v_new_time' ne ressemble en rien à une valeur de
type timestamp.
> Pouvez-vous m'aider ou me donner des pistes ?
>
Ton problème vient de la façon de faire ton cast. À mon avis, c'est pas
standard du tout. Bref, tu as deux possibilités :
* soit la syntaxe "::"
select d1::"timestamp with time zone" - d2::timestamp with time zone
into v;
* soit utiliser cast
Quelque soit ton choix, pense à placer le INTO après le SELECT,
autrement dit :
select into v d1::timestamp with time zone
- d2::timestamp with time zone ;
--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com
From: | Samuel ROZE <samuel(dot)roze(at)aliceadsl(dot)fr> |
---|---|
To: | Guillaume Lelarge <guillaume(at)lelarge(dot)info> |
Cc: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: pgplsql: Substitution de variables |
Date: | 2008-09-03 13:48:01 |
Message-ID: | 1220449681.20646.0.camel@samuel-laptop |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Bonjour,
Merci beaucoup, ça marche sans problèmes avec la deuxième méthode qui
est :
SELECT variable::timestamptz
(et non "::timestamp with zone" :) )
Merci !
Le mardi 02 septembre 2008 à 21:19 +0200, Guillaume Lelarge a écrit :
> Samuel ROZE a écrit :
> > Bonjour à tous (encore une fois :) ),
> >
> > Je suis actuellement confronté à un problème que je trouve assez bizare,
> > lors de la substitution de variables dans une requête SELECT :
> >
> > ----------
> > [...]
> > SELECT (timestamp with time zone "v_new_time" - timestamp with time zone
> > "v_temps") INTO v_interval;
> > [...]
> > ----------
> >
> > Cette simple commande SELECT ... INTO donne cette erreur :
> >
> > ----------
> > 7-statistiques-triggers.sql:116: ERREUR: erreur de syntaxe sur ou près
> > de « $1 » at character 37
> > QUERY: SELECT (timestamp with time zone $1 - timestamp with time zone
> > $2 )
> > CONTEXT: SQL statement in PL/PgSQL function "parse_donnees_brutes" near
> > line 66
> > ----------
> >
> > Je ne comprend pas... J'ai essayer avec des guillements simple, ça
> > marche mais après lors de l'exécution il y a un problème logique qui me
> > dit par exemple que "v_new_time n'est pas du type timestamptz"...
> >
>
> Logique car un guillemet simple indique une chaîne de caractères, et la
> chaîne de caractères 'v_new_time' ne ressemble en rien à une valeur de
> type timestamp.
>
> > Pouvez-vous m'aider ou me donner des pistes ?
> >
>
> Ton problème vient de la façon de faire ton cast. À mon avis, c'est pas
> standard du tout. Bref, tu as deux possibilités :
>
> * soit la syntaxe "::"
>
> select d1::"timestamp with time zone" - d2::timestamp with time zone
> into v;
>
> * soit utiliser cast
>
> Quelque soit ton choix, pense à placer le INTO après le SELECT,
> autrement dit :
>
> select into v d1::timestamp with time zone
> - d2::timestamp with time zone ;
>
>
> --
> Guillaume.
> http://www.postgresqlfr.org
> http://dalibo.com
>