Vous n'êtes pas identifié(e).
Pages : 1
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
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
Bonjour Marc,
Merci pour la soluce, ça me convient.
Bonne journée.
Hors ligne
Pages : 1