Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 13/10/2017 09:45:51
- mortimer.pw
- Membre
Exploiter RECORD pg_control_checkpoint()
Bonjour,
Je travaille avec un moteur 9.6.5 sous Cent-OS 7.
La Fonction pg_control_checkpoint() retourne un RECORD avec différentes informations (colonnes).
Comment les exploiter ?
CREATE OR REPLACE FUNCTION dba.checkpoint()
RETURNS void AS
$BODY$
DECLARE
rCheck RECORD;
BEGIN
SELECT pg_control_checkpoint() INTO rCheck;
RAISE NOTICE 'Checkpoint location : %', rCheck.checkpoint_location;
END;
$BODY$
LANGUAGE plpgsql VOLATILE COST 100;
D'avance merci pour votre aide.
Hors ligne
#2 13/10/2017 12:21:28
- Marc Cousin
- Membre
Re : Exploiter RECORD pg_control_checkpoint()
Bonjour,
Le problème, c'est que rcheck n'est pas un type composite. C'est un record contenant un seul champ qui contient le type composite. Le plus simple, c'est de récupérer un vrai record:
CREATE OR REPLACE FUNCTION dba.checkpoint()
RETURNS void AS
$BODY$
DECLARE
rCheck RECORD;
BEGIN
SELECT * from pg_control_checkpoint() INTO rCheck;
RAISE NOTICE 'Checkpoint location : %', rCheck.checkpoint_location;
END;
$BODY$
LANGUAGE plpgsql VOLATILE COST 100;
Il doit aussi y avoir une syntaxe tordue pour que plpgsql comprenne qu'on veut le champ d'un record de composite… mais j'ai pas réussi à remettre la main dessus (quelque chose à coup de parenthèses).
On peut sinon juste l'écrire en deux temps:
CREATE OR REPLACE FUNCTION dba.checkpoint()
RETURNS void AS
$BODY$
DECLARE
rCheck RECORD;
ckpt RECORD;
BEGIN
SELECT pg_control_checkpoint() INTO rCheck;
ckpt:=rCheck.pg_control_checkpoint;
RAISE NOTICE 'Checkpoint location : %', ckpt.checkpoint_location;
END;
$BODY$
LANGUAGE plpgsql VOLATILE COST 100;
Marc.
Hors ligne
#3 16/10/2017 08:00:45
- mortimer.pw
- Membre
Re : Exploiter RECORD pg_control_checkpoint()
Bonjour Marc,
Merci pour la soluce, ça me convient.
Bonne journée.
Hors ligne
Pages : 1