Vous n'êtes pas identifié(e).
Pages : 1
bbonjour
je veux rentrer le nom du  schema 
et patiner toutes les tables pour faire un 'VACUUM ANALYSE 
mais erreur
ERROR:  VACUUM cannot be executed from a function
CONTEXT:  SQL statement "VACUUM ANALYSE rga.rga2000_04"
PL/pgSQL function "fct_vacuum_by_schema" line 30 at execute statement
********** Erreur **********
ERROR: VACUUM cannot be executed from a function
État SQL :25001
Contexte : SQL statement "VACUUM ANALYSE rga.rga2000_04"
PL/pgSQL function "fct_vacuum_by_schema" line 30 at execute statement
Merci
CREATE OR REPLACE FUNCTION fct_vacuum_by_schema
(v_name_schema character varying)
  RETURNS void AS
$BODY$
DECLARE
    l_va_schema varchar; /* Nom du schema*/
    l_va_table varchar;  /* Nom tables du schema */
    l_va_tmp  varchar;
    /* Requete extrait toutes les tables d'un schema*/
     c_com CURSOR for SELECT  distinct info.table_schema,info.table_name  from 
     (select c.*, pc.*, pc.oid as oid
     from pg_catalog.pg_class as pc, information_schema.columns as c
     where pc.relname=c.table_name and c.table_schema != 'information_schema'  
     and c.table_schema != 'pg_catalog') as info 
     LEFT OUTER JOIN 
     (SELECT pc.*, PD.* FROM pg_catalog.pg_description PD right outer join pg_catalog.pg_class PC
     on PD.objoid = PC.oid AND PD.objsubid = 0 ) as pde on info.oid = pde.objoid
     where 
     info.table_schema =     ''||  quote_ident($1)  || '';  
BEGIN
  /* Ouverture Curseur*/
  open c_com;
LOOP
 FETCH c_com into l_va_schema,l_va_table; 
 IF l_va_table IS NOT NULL then 
      l_va_tmp:='';
      l_va_tmp := 'VACUUM ANALYSE ' || trim(l_va_schema) ||'.'|| trim(l_va_table);
      EXECUTE l_va_tmp;
      RAISE NOTICE ' Traitement --->  %', l_va_tmp;
 END IF;
 EXIT WHEN NOT FOUND;
END LOOP;
/* Fermeture Curseur*/
RAISE NOTICE ' FIN VACUUM ANALYSE  %', l_va_table;
CLOSE c_com;
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION fct_genere_trigger(character varying, character varying) OWNER TO "admin";
select acl_admin.fct_vacuum_by_schema('rga');
Hors ligne
ERROR: VACUUM cannot be executed from a function
Je ne vois pas quoi rajouter
Marc.
Hors ligne
ah c'est dommage alors creer un fichier texte de script ?
merci
Hors ligne
Oui.
Marc.
Hors ligne
RAISE NOTICE ' Traitement --->  %', l_va_tmp;
comment fait t'on pour afficher à l'ecran que l_va_tmp
et qui'l n'y ai pas raise notice devant ?
Hors ligne
On ne peut pas empêcher l'affichage du NOTICE.
Guillaume.
Hors ligne
bonjour,
peut on empêcher l'affichage des messages contexte ??
Hors ligne
Pages : 1