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

#1 22/09/2014 11:33:21

mortimer.pw
Membre

SET TIME ZONE &variable

Bonjour tout le monde,

Je travaille sous CenOS 5.4 avec un moteur PostgreSQL 9.3.2.

Je souhaite écrire une procédure stockée dans laquelle je veux fixer le TIMEZONE à l'aide d'une variable (cTimeZone).

Ci-dessous un bout de mon code :
        ......
    cTimeZone VARCHAR(50);
BEGIN
    SELECT timezone INTO cTimeZone FROM TOTO.Site WHERE id_cgu=$1 AND id_site=$2;
    IF cTimeZone IS NOT NULL AND cTimeZone!='' THEN SET TIME ZONE cTimeZone;END IF;
        .....

Cela ne fonctionne pas, à l'exécution de ma procédure j'obtiens :
        ERROR:  invalid value for parameter "TimeZone": "ctimezone"
        CONTEXT:  SQL statement "SET TIME ZONE cTimeZone"
        PL/pgSQL function poin(character varying,character varying,character varying,character varying,character,character) line 20 at SQL statement
        ********** Erreur **********
        ERROR: invalid value for parameter "TimeZone": "ctimezone"
        État SQL :22023
        Contexte : SQL statement "SET TIME ZONE cTimeZone"
        PL/pgSQL function poin(character varying,character varying,character varying,character varying,character,character) line 20 at SQL statement


Comment faire interpréter mon "cTimeZone" dans la commande SET TIME ZONE ?

Hors ligne

#2 22/09/2014 22:55:29

gleu
Administrateur

Re : SET TIME ZONE &variable

Il faut utiliser une requête dynamique. Jetez un oeil à PERFORM et EXECUTE.


Guillaume.

Hors ligne

#3 24/09/2014 10:43:21

mortimer.pw
Membre

Re : SET TIME ZONE &variable

Bonjour Guillaume,

C'est ce que j'avais fait en attendant, je pensais qu'il y avait "plus propre".

Merci.

Hors ligne

Pied de page des forums